- --动态语句语法
- /******************************************************************************************************************************************************
- 动态语句语法:exec/sp_executesql语法
- 整理人:中国风(Roy)
- 日期:2008.06.06
- ******************************************************************************************************************************************************/
- 动态语句语法:
- --方法1查询表改为动态
- select*fromsysobjects
- exec('selectID,Namefromsysobjects')
- execsp_executesqlN'selectID,Namefromsysobjects'--多了一个N为unicode
- --方法2:字段名,表名,数据库名之类作为变量时,用动态SQL
- declare@FNamevarchar(20)
- set@FName='ID'
- exec('select'+@FName+'fromsysobjectswhere'+@FName+'=5')
- declare@svarchar(1000)
- set@s=N'select'+@FName+'fromsysobjectswhere'+@FName+'=5'
- execsp_executesql@s--会报错
- declare@snvarchar(1000)--改为nvarchar
- set@s=N'select'+@FName+'fromsysobjectswhere'+@FName+'=5'
- execsp_executesql@s--成功
- --方法3:输入参数
- declare@iint,@snvarchar(1000)
- set@i=5
- exec('selectID,NamefromsysobjectswhereID='+@i)
- set@s='selectID,NamefromsysobjectswhereID=@i'
- execsp_executesql@s,N'@iint',@i--此处输入参数要加上N
- --方法4:输出参数
- declare@iint,@snvarchar(1000)
- set@s='select@i=count(1)fromsysobjects'
- --用exec
- exec('declare@iint'+@s+'select@i')--把整个语句用字符串加起来执行
- --用sp_executesql
- execsp_executesql@s,N'@iintoutput',@ioutput--此处输出参数要加上N
- select@i
- --方法5:输入输出
- --用sp_executesql
- declare@iint,@conint,@snvarchar(1000)
- set@i=5
- select@s='select@con=count(1)fromsysobjectswhereID>@i'
- execsp_executesql@s,N'@conintoutput,@iint',@conoutput,@i
- select@con
- --用exec
- declare@iint,@snvarchar(1000)
- set@i=5
- select@s='declare@conintselect@con=count(1)fromsysobjectswhereID>'+rtrim(@i)+'select@con'
- exec(@s)
動態語句的使用方法(exec/sp_executesql)
最新推荐文章于 2021-04-06 16:33:09 发布