可参考以下例子,如代码:
declare @s varchar(2000)
declare @tablename varchar(20)
set @tablename='test'
set @s='select * from ' + @tablename + ''
exec(@s)结果:
注意:代码中倒数第二句的写法,也就是执行的动态sql语句,引用的动态名称需要用引号及加号。最后一句的动态sql也要用括号括起来。
sqlserver中EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理
1.使用系统存储过程sp_executesql运行Unicode命令字符串
语法如下:
sp_executesql [@stmt=] stmt
[
{,[@params=] N'@parameter_name data_type [,...n]'}
{,[@param1=] 'value' [,...n]}
]
说明:必须先将各个包含所要运行的命令语句的Unicode字符串相加在一起,再交给系统存储过程sp_executesql来运行,而不能在sp_executesql的语句中来相加各个命令字符串。
举例如下:
declare @DBName nvarchar(20),
@Tbname nvarchar(20),
@SQLString nvarchar(500)
set @DBName=N'Northwind'
set @Tbname=N'Customers'
set @SQLString=N'USE '+@DBName+char(13) --char(13)换行
SET @SQLString=@SQLString+N'select * from '+@Tbname
--必须先将命令字符串组合完毕后再交给sp_executesql来运行
exec sp_executesql @SQLString
2.使用EXECUTE命令运行命令字符串
要使用EXECUTE命令来运行一个命令字符串的语法如下:
EXEC[UTE] ({@string_variable|[N] 'stql_string'} [+...n])
从语法看出,可以先将包含所要运行的命令的字符串赋给一个局部变量@string_variable,再使用EXECUTE命令来运行,或是直接使用EXECUTE命令去运行一个包含所要运行的命令语句的字符串。此外,您也可以将多个包含所要运行的命令语句的字符串相加在一起,再交给EXECUTE命令来一次运行。
例:
declare @sql nvarchar(4000)
set @sql='select * from [表] where email=''test@163.com'''
exec (@sql)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)