不知为啥,当我得查询中出现distinct时,order by 中必须包含要查询的列,否则报错。
SELECT DISTINCT a.DetailId, a.OrderId, a.ProductId, pi2.BarCode, pi1.ProductName, pi1.productCode, pi1.spec, a.UnitId, ui.UnitName, SNUM(a.DetailId) as Quantity, a.Discount, a.UnitPrice, a.TaxRate, a.ProductMoney, a.TaxMoney, a.PayableMoney, a.IsGiveAway, a.DetailId AS ColGuid, a.ParentGuid, a.DetailId AS OrderDetailId, a.OrderId AS RelevanceOrder, a.Memo, pi2.SalePrice AS InitUnitPrice, a.SEQ, ---必须包含这个,否则报错 a.Quantity - SNUM(a.DetailId) AS OutQuantity FROM SaleOrderDetail a LEFT JOIN ProductInfo pi1 ON a.ProductId = pi1.ProductId LEFT JOIN ProductPrice pi2 ON a.ProductId = pi2.ProductId AND pi2.unitid = a.unitid LEFT JOIN UnitInfo ui ON a.UnitId = ui.UnitId WHERE a.DetailId IN (SELECT COLUMN_VALUE FROM TABLE(SPLITSTR(IDS, ','))) ORDER BY a.SEQ ASC
还有就是从程序传入存储过程中的参数值,如果是个空字符串,在存储过程中获取也是个null,这里要注意。
动态sql时,sql语句不能用NVARCHAR2类型,一定要用VARCHAR2类型。