灰原哀出现的集数国版:exec @sql 与exec (@sql)的区别

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 05:34:19
我在存储过程中使用:exec @sql出错 提示:服务器: 消息 203,级别 16,状态 2,行 9
名称 ''select aa.xsh,aa.jfqj,isnull(……
但是使用exec (@sql)却正常,

那么他们有什么区别呢?

exec (@strsql)是用来执行变量形式的SQL语句方式,一定要用括号;
exec @strsql 是用来执行存储过程的形式,如果@strsql是变量,先计算后执行计算结果所表示的存储过程。
如1.
declare @strsql varchar(100)
set @strsql="select getdate()"
exec (@strsql)
2.
declare @r int
set @strsql="BackupData'
exec @r=@strsql 'jsox_history',''
@r可取得返回值。

请看EXEC语法
EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )

所以区别在于
exec @sql 不符合语法规则
exec (@sql) 符合语法规则

exec 和 sql 都是SQL字符串,没什么区别,只是变量名不一样,你可以随意取个名字,只要内容是SQL语句即可