sp_executesql 注意事項
之前工作時有過這個錯誤
當我用sp_executesql執行的時候發生了錯誤,因此查了篇文章,這篇文章是當作紀錄。
當初我也是像這段SQL一樣無法查出內容
DECLARE @sql nVARCHAR(max);
SET @sql = 'SELECT * FROM dbo.T1 WHERE c1=@c1 and c2 = @c2 AND c3 = @c3;';
EXECUTE sp_executesql @sql
, N'@c1 int, @c2 varchar, @c3 nvarchar'
,1, '1111111111111111111111', N'1111111111111111111111'
後來發現是因為sp_executesql 的@c2 @c3裡面的varchar 被預設為長度1
自然找不到東西 因為SELECT * FROM dbo.T1裡面的值最多只有一位
參考:
https://dotblogs.com.tw/rainmaker/2015/10/01/153472
留言
張貼留言