我有一個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