所有人知道select * from tablename where aa=bb的用法
大部分人知道 exec('select * from tablename where aa=bb')的用法
但是仍然有很多人不知道sp_executesql的用法,他可以讓動態sql接收引數且把查詢結果返回到乙個引數
--接收條件值引數的靜態sqldeclare @name varchar(100)
set @name='sysobjects'
select name from sysobjects where object_name(id)=@name
go--接收整個條件描述的簡單動態sql
declare @where varchar(100)
set @where='object_name(id)=''sysobjects'''
exec('select name from sysobjects where '+@where)
go--接收整個條件描述,且把查詢返回到變數引數的複雜動態sql
declare @where nvarchar(100)
set @where=n'object_name(id)=''sysobjects'''
declare @ret varchar(100)
declare @sql nvarchar(1000)
set @sql=n'select @ret=name from sysobjects where '+ @where
exec sp_executesql @sql,n'@ret varchar(100) output' ,@ret=@ret output
select @ret
go--也許不了解第三種用法的朋友會質疑,從乙個@where變數的條件提取資料到@ret變數有什麼用,乙個複雜的參考請參見我以前改編的
--《伴水的划拳機械人》的sql版,它完全是通過動態sql來實現的。
--
sqlserver中動態sql語句應用
所有人知道select from tablename where aa bb的用法 大部分人知道 exec select from tablename where aa bb 的用法 但是仍然有很多人不知道sp executesql的用法,他可以讓動態sql接收引數且把查詢結果返回到乙個引數 接收條...
sqlserver中動態sql語句應用
所有人知道select from tablename where aa bb的用法 大部分人知道 exec select from tablename where aa bb 的用法 但是仍然有很多人不知道sp executesql的用法,他可以讓動態sql接收引數且把查詢結果返回到乙個引數 接收條...
sql server 獲取動態sql輸出結果
不帶輸出結果 我們一般會這樣寫 例子 乙個輸出6位遞增號碼結果 alter proc getcode tbvarchar 50 tag varchar 50 as declare sqlstring nvarchar max set sqlstring select tag right 100000...