下面是我創建的過程。當我單獨運行查詢時,我在數據庫中查找記錄,但是當我執行該過程時,它不會獲取任何記錄。我哪裏錯了?SQL過程不顯示任何值
ALTER PROCEDURE [dbo].[GetTransferList]
@date1 datetime='2015-01-01 00:00:00.000',
@date2 datetime='2017-01-01 00:00:00.000',
@shipto varchar(50)=''
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
-- Insert statements for procedure here
DECLARE
@sql NVARCHAR(MAX),
@paramlist NVARCHAR(4000),
@nl CHAR(2) = CHAR(13) + CHAR(10),
@ParamDefinition NVarchar(2000);
SET @sql = 'SELECT A.ItemDescription,A.PurchaseOrderID,A.QuantityReceived,A.Price,A.StoreID,
C.ItemType,C.BinLocation,
B.PONumber,B.ShipTo,B.StoreID
FROM [dbo].[PurchaseOrderEntry] A, [dbo].[PurchaseOrder] B,[dbo].[Item] C
WHERE A.PurchaseOrderID=B.ID AND A.ItemID=C.ID ';
IF (@date1 IS NOT NULL) AND (@date2 IS NOT NULL )
SET @sql += ' AND B.[RequiredDate] between @date1 AND @date2';
IF @shipto IS NOT NULL --!='ALL'
SET @sql += ' AND B.ShipTo = @shipto ';
SET @sql += ' GROUP BY C.BinLocation,A.Price,C.ItemType, B.ID ,A.ItemDescription,
A.PurchaseOrderID,A.QuantityReceived,A.StoreID,B.PONumber,B.ShipTo,B.StoreID'
Set @ParamDefinition =' @shipto varchar(50),
@date1 datetime,
@date2 datetime'
Execute sp_Executesql @sql,
@ParamDefinition,
@shipto,
@date1,
@date2
If @@ERROR <> 0 GoTo ErrorHandler
Set NoCount OFF
Return(0)
ErrorHandler:
Return(@@ERROR)
END
查詢取值低於,
SELECT A.ItemDescription,A.PurchaseOrderID,A.QuantityReceived,A.Price,A.StoreID,
C.ItemType,C.BinLocation,
B.PONumber,B.ShipTo,B.StoreID
FROM [dbo].[PurchaseOrderEntry] A, [dbo].[PurchaseOrder] B,[dbo].[Item] C
WHERE A.PurchaseOrderID=B.ID AND A.ItemID=C.ID
GROUP BY C.BinLocation,A.Price,C.ItemType, B.ID ,A.ItemDescription,
A.PurchaseOrderID,A.QuantityReceived,A.StoreID,B.PONumber,B.ShipTo,B.StoreID
你將什麼傳遞到存儲過程? (你的分組在提取查詢中是不同的)你爲什麼分組? – Fred
我修改了第二個查詢,以前我複製了一個錯誤的,現在可以找到我出錯的地方了嗎?理想情況下,當我使用過程中沒有輸入運行時,它應該給出第二個查詢的相同結果.. – Jobin
您確定這是您正在運行的SQL嗎?你已經初始化了@shipto varchar(50)=''',這樣它將被添加到SQL中,因爲它不是NULL。 –