sqlserver 動態sql執行execute和sp_executesql,用動態SQL語句給變數賦值
阿新 • • 發佈:2020-07-15
sp_executesql的運用
書寫語法要點:
exec sp_executesql @sql,N’引數1 型別1,引數2 型別2,引數3 型別3 OUTPUT’,引數1,引數2,引數3 OUTPUT;
注意引數前後順序必須對應好 如下圖不同顏色的標記
簡易測試程式碼:
declare @FSQL nVARCHAR(1000),@FF VARCHAR(100) SET @FSQL='SELECT @FF=''AA'' ' PRINT @FSQL exec sp_executesql @FSQL,N'@FF VARCHAR(100) OUT',@FF SELECT@FF
注意
1> @sql 必須為ntext/nchar/nvarchar型別
2> @sql的引數賦值語句的前面必須用"N",轉換為Unicode字串
--定義一個遊標 declare zb_cur cursor for select zb_gl.zb_sql_gs from zb_gl<br>--@zb_sql為動態sql,過程需要型別為 'ntext/nchar/nvarchar' 的引數 '@statement'。 declare @zb_sql nvarchar(2000) declare @ymd varchar(20) set @ymd='2019-1-1' --開啟遊標 open zb_cur while 0=0 begin --讀取遊標 fetch next from zb_cur into @zb_sql if @@FETCH_STATUS=0 begin print @zb_sql exec sp_executesql @zb_sql,N'@ymd varchar(20)',@ymd end else break end close zb_cur --摧毀遊標 deallocate zb_cur