日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

两种动态SQL

發(fā)布時間:2023/12/1 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两种动态SQL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考:
http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.html
http://www.cnblogs.com/xbf321/archive/2008/11/02/1325067.html

?

兩種動態(tài)SQL
  1. EXEC (@sql)
  2. EXEC sp_executesql

性能:
sp_executesql提供了輸入輸出接口,更具有優(yōu)勢
sp_executesql根據(jù)參數(shù)重用執(zhí)行計(jì)劃,不需要每一次都重新編譯,提高了執(zhí)行性能; EXEC因?yàn)槊看螛?gòu)建的@sql字符串不一樣,必須重新編譯
除非您有令人信服的理由使用EXEC,否側(cè)盡量使用sp_executesql

注意:(執(zhí)行動態(tài)sql時候,防止sql注入攻擊)


1. 使用EXEC(@sql)時,如果您想訪問變量,必須把變量內(nèi)容串聯(lián)到動態(tài)構(gòu)建的代碼字符串中

declare @sql nvarchar(200) declare @id varchar(20) set @id='1' set @sql='select * from SMCN_CUList_China where Rownum_id = ' + @id exec (@sql)

?

2. sp_executesql后面跟有三部份,分別是 @stmt, @params, params_assignment

declare @sql nvarchar(200) declare @id varchar(20) declare @count int set @id='1' set @sql='select @count = count(1) from t_a where Rownum_id = @id' exec sp_executesql @sql, N'@count int out,@id varchar(20)',@count out,@id select @count

sp_executesql使用:

  sp_executesql要求動態(tài)Sql (即@stmt部分) 和動態(tài)Sql參數(shù)列表 (即@params部分) 必須是Nvarchar
  N'@count int out,@id varchar(20)' 是@stmt內(nèi)的參數(shù)列表; @count out,@id 是為@params參數(shù)列表提供值的外部參數(shù)列表
  sp_executesql 參數(shù)列表@params與外部提供值的參數(shù)列表params_assignment的順序必需一致; 如果不一致,必須顯式標(biāo)明,如 @id=@id, @count=@count out
  動態(tài)SQl的參數(shù)列表與外部提供參數(shù)的參數(shù)列表參數(shù)名可以同名

轉(zhuǎn)載于:https://www.cnblogs.com/lynhou/p/6737830.html

總結(jié)

以上是生活随笔為你收集整理的两种动态SQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。