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 OUT
 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM