我用下面的语句不行:
set @sqlstr="alter table sbtmp add " + @ztmc + "binary"
exec @sqlstr
原因是它把 @sqlstr 里的内容当成了存储过程的名字...
提问:做到题目中的要求,在存储过程中执行变量代表的SQL语句,或用其它方法执行在存储过程中动态生成的 sql语句
多谢...
exec要加括号:
set @sqlstr="alter table sbtmp add " + @ztmc + " binary"
exec(@sqlstr)
set @sqlstr=alter table sbtmp add + @ztmc + binary
exec(@sqlstr)
用EXEC[UTE]执行存储过程和执行字符串的语法是不一样的:
----------------------------------------------------------------------
执行字符串:
EXEC [ UTE ] ( { @string_variable | [ N ] tsql_string } [ + ...n ] )
执行存储过程:
[ [ EXEC [ UTE ] ]
{
[ @return_status = ]
{ procedure_name [ ;number ] | @procedure_name_var
}
[ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] ]
[ ,...n ]
[ WITH RECOMPILE ]
双引号最好用单引号,另外binary要加长度,要不默认是1:
set @sqlstr=alter table sbtmp add + @ztmc + binary(16)
exec(@sqlstr)