1. 程式人生 > 實用技巧 >sqlserver 動態sql執行execute和sp_executesql,用動態SQL語句給變數賦值

sqlserver 動態sql執行execute和sp_executesql,用動態SQL語句給變數賦值

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