exec要加括号:set @sqlstr="alter table sbtmp add " + @ztmc + " binary"
exec(@sqlstr)

解决方案 »

  1.   

    set @sqlstr='alter table sbtmp add ' + @ztmc + 'binary'
    exec(@sqlstr)
      

  2.   

    用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 ] 
      

  3.   

    双引号最好用单引号,另外binary要加长度,要不默认是1:set @sqlstr='alter table sbtmp add ' + @ztmc + ' binary(16)'
    exec(@sqlstr)