2011-10-04 96 views
1

我有一個字符串,它看起來像這樣:我打印出來,它看起來像這樣SQL Server的sp_executesql的錯誤

 
set @sqlstring = N'select @mindate = min(time), @maxdate = max(time) from ' + @st_churn_active_table; 

 
select @mindate = min(time), @maxdate = max(time) from derp.derp_table 

我跑sp_executesql的像這樣的參數定義:

 
execute sp_executesql @sqlstring, N'@maxdate date,@mindate date' 

它象這樣的錯誤:

 
The parameterized query '(@maxdate date,@mindate date)select @mindate = min(time), @maxda' expects the parameter '@maxdate', which was not supplied. 

字符串變成
'(@maxdate日,@ MINDATE日期)選擇@mindate =分鐘(時間),@maxda'
SQL字符串被切斷,沒有人知道爲什麼和如何解決這個問題?

謝謝!

回答

1

首先,SQL Server將看到整個字符串。這只是錯誤消息截斷它。注意,即使被截斷的sql字符串只有部分名稱,錯誤也會得到缺少的參數的名稱。

其次,這不會如何工作。 You can't use output parameters that way with sp_executesql.

但最後是爲什麼它拋出一個錯誤的問題。我不能確定,但​​我懷疑這裏的問題是有一個類型不匹配,所以它不能使用你給它的參數。我希望SQL服務器能夠在這種情況下拋出一個更好的錯誤消息(抱怨類型不匹配),但是我沒有sql server方便測試,我想不出任何其他原因導致問題。