2024年4月19日发(作者:)
SQL EXEC 命令用法
EXEC命令有两个用法:执行一个存储过程,或者执行一个动态批次。批次是一个内容
为SQL语句的字符串。
例如:
declare @schemaName varchar(80),@tableName varchar(80),@objName
varchar(512);
set @schemaName='dbo';
set @tableName='Orders';
set @objName=@schemaName+'.'+@tableName;
exec('select count(*) from '+@objName);
注意,在exec的括号里,只允许是字符串变量、字符串常量存在。不允许在这里调用
函数或者使用case表达式。
下面的代码是错误的:
exec('select count(*) from '+quotename(@objName));
所以,基本的方法是将语句保存到一个变量里,例如:
set @sql='...';
exec(@sql);
这就不存在上述限制了。
1 ,EXEC没有接口
Exec的唯一输入是字符串。一个动态批次无权访问调用它的批次内所定义的局部变量:
declare @i int
set @i=1;
declare @sql varchar(255)
set @sql='select * from where rderid=@i';
exec(@sql);
出错:必须声明标量变量@i
原因还是@i不能放在''之内,它只能通过字符串连接动态的嵌入到SQL语句里:
set @sql='select * from where rderid='+cast(@i as
varchar(10));
变量与字符串连接会引发所谓的SQL注入安全隐患,如果变量包含了字符串。要防患
发布评论