TSQL sp_executesql 用法及注意事項

  • 2292
  • 0

sp_executesql 時,程序必須有類型 'ntext/nchar/nvarchar' 的參數 '@statement'

  1.  因為sp_executesql 的前二參數必需為 ntext 或 nchar 或nvarchar,所以宣告不對就會造成這個結果。
  2. 如果資料表要用變數,請在組SQL語法時直接組入,不能用帶變數方式。
  3. 輸出變數,宣告時要帶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