我有一个SQL Server视图:SQL Server视图会产生不同的结果集
SELECT SOPOrderReturn.DocumentNo,
StockItem.Code,
SLCustomerAccount.CustomerAccountNumber,
SOPOrderReturn.CustomerID,
SOPDocDelAddress.PostalName,
SOPDocDelAddress.AddressLine1,
SOPDocDelAddress.AddressLine2,
SOPDocDelAddress.AddressLine3,
SOPDocDelAddress.AddressLine4,
SOPDocDelAddress.PostCode,
SOPOrderReturnLine.LineQuantity,
SOPOrderReturn.PromisedDeliveryDate,
StockItem.SpareNumber2,
StockItem.SpareNumber3,
StockItem.Name,
StockItem.SpareText2,
StockItem.SpareText1,
StockItem.SpareNumber1
FROM SOPOrderReturn
INNER JOIN SOPOrderReturnLine
ON SOPOrderReturn.SOPOrderReturnID = SOPOrderReturnLine.SOPOrderReturnID
INNER JOIN SOPDocDelAddress
ON SOPOrderReturn.SOPOrderReturnID = SOPDocDelAddress.SOPOrderReturnID
INNER JOIN SLCustomerAccount
ON SOPOrderReturn.CustomerID = SLCustomerAccount.SLCustomerAccountID
INNER JOIN StockItem
ON SOPOrderReturnLine.ItemCode = StockItem.Code
WHERE (NOT (StockItem.Code LIKE '%DELIVERY%')) AND
(NOT (StockItem.Name LIKE '%DELIVERY%')) AND
(SOPOrderReturn.PromisedDeliveryDate > CURRENT_TIMESTAMP - 3)
当所谓的 '是' 从.NET使用此查询:
SELECT [DocumentNo],[Code],
[CustomerAccountNumber],
[CustomerID],[PostalName],
[AddressLine1],[AddressLine2],
[AddressLine3],[AddressLine4],
[PostCode],[LineQuantity],
[PromisedDeliveryDate],
[SpareNumber2],
[SpareNumber3],
[Name],
[SpareText2],
[SpareText1],
[SpareNumber1]
FROM [viwSalesOrdersRecent];
...一切都虎背熊腰,脚蹬多莉。它返回我期望看到的所有861行,这与SQL Server在视图中应该显示的内容相匹配。
然而,当我调用View(如上)与以下WHERE子句上涨了它:不要
WHERE [DocumentNo] = @prmSalesOrderNumber AND [Code] = @prmStockCode;
查询返回的整个数据集,忽略了视图内现有Where子句,我不理解这种行为。我不熟悉SQL Server,3年没有触及过它,现在我已经深入了解它,完全超出了我的深度。
任何帮助将不胜感激。
仔细检查你是否真的将'where'子句添加到视图中,你认为你是 – Andomar
@Andomar:刚刚检查过,确定我删除了View并重新运行查询,因为它失败了找不到视图,所以我一定在看正确的视图。 – DrObey
使用Profiler检查传递给查看的参数值。 – Kashif