sp_executesql 時,程序必須有類型 'ntext/nchar/nvarchar' 的參數 '@statement'
- 因為sp_executesql 的前二參數必需為 ntext 或 nchar 或nvarchar,所以宣告不對就會造成這個結果。
- 如果資料表要用變數,請在組SQL語法時直接組入,不能用帶變數方式。
- 輸出變數,宣告時要帶OUTPUT,導出時也要帶OUTPUT
例:
declare @sqlString nvarchar(max)
declare @receieve nvarchar(2)
declare @tableName varchar(200)='MyTable'
set @sqlString= ' select @retIdx=(min(idx)-1) from ' + @tableName
-- 參數1是 @sqlString, 參數2是N'@retIdx...OUTPUT' 這串
exec sp_executesql @sqlString,N'@retIdx nvarchar(2) OUTPUT', @retIdx= @receieve OUTPUT