我有一個查詢,它的工作原理,當它是這樣運行:SQL查詢工作正常,但無法在動態
declare @nvRecipients varchar(4000)
,@CustomerCode varchar(6)
,@start datetime
,@end datetime
SELECT @CustomerCode = '10095'
,@start = '01/01/2011'
,@end = '02/01/2011'
Select substring(PSD.DTSItemCode,1,4) As ItemCompanyCode ,
convert(varchar(50),Cast(Sum(PSD.Quantity) as money),1) As TotalShipped
From [AVANTISERVER\NCL_MASTER].AVANTI.dbo.PackingSlipHeader PSH
Inner Join [AVANTISERVER\NCL_MASTER].AVANTI.dbo.PackingSlipsDetail PSD On PSH.PKSNumber = PSD.PKSNumber
Where Cast (PKSDate As DateTime) >= @start
And Cast (PKSDate As DateTime) <= @end
And PSD.Quantity > 0
And (CompanyCode = @CustomerCode)
Group By substring(PSD.DTSItemCode,1,4)
Order By substring(PSD.DTSItemCode,1,4)
但
語法錯誤轉換日期時間從 字符串引發錯誤。
Set @nvQuery = ' Select substring(PSD.DTSItemCode,1,4) As ItemCompanyCode , ' Set @nvQuery = @nvQuery + ' convert(varchar(50),Cast(Sum(PSD.Quantity) as money),1) As TotalShipped ' Set @nvQuery = @nvQuery + ' From [AVANTISERVER\NCL_MASTER].AVANTI.dbo.PackingSlipHeader PSH ' Set @nvQuery = @nvQuery + ' Inner Join [AVANTISERVER\NCL_MASTER].AVANTI.dbo.PackingSlipsDetail PSD On PSH.PKSNumber = PSD.PKSNumber ' Set @nvQuery = @nvQuery + ' Where Cast (PKSDate As DateTime) >= ''' + @start + ''' ' Set @nvQuery = @nvQuery + ' And Cast (PKSDate As DateTime) <= ''' + @end + ''' ' Set @nvQuery = @nvQuery + ' And PSD.Quantity > 0 ' Set @nvQuery = @nvQuery + ' And (CompanyCode = ''' + @CustomerCode + ''') ' Set @nvQuery = @nvQuery + ' Group By substring(PSD.DTSItemCode,1,4) ' Set @nvQuery = @nvQuery + ' Order By substring(PSD.DTSItemCode,1,4) '
有人能看到我的錯誤:
當一個存儲過程,其中@customercode,@啓動和@end被提供的參數內跑了這個樣子?我似乎無法找到它。數據全部用ISDATE()檢出。
我還沒有嘗試過,但對於初學者,您顯式轉換爲datetime在您的查詢,但隱含(未讀)在您的動態地創建查詢 – 2011-04-04 20:16:51
是啊,這是一個錯誤(的變化我已經試過了雙向)。我已經將問題編輯回原來的方式,在兩個地方投射。 – MAW74656 2011-04-04 20:17:43
您已將日期時間轉換爲數量。我懷疑你的意圖是什麼。 – 2011-04-04 20:19:20