用得着这么麻烦吗?既然@x<5那就先定义好那4个变量,即使后来用不上也没关系呀。

解决方案 »

  1.   

    declare @x int,@a char(2),@sql char(100)
    set @x=1
    set @a='aa'
    while @x<5
    begin
        set @sql='declare @tj'+ ltrim(str(@x))+' char(10)  set @tj'+ltrim(str(@x))+'='''+@a+''''
        exec(@sql)
        set @x=@x+1
    end
      

  2.   

    declare @x int,@a char(2),@sql varchar(8000)
    set @x=1
    set @a='aa'
    while @x<5
    begin
        set @sql='declare @tj'+ ltrim(str(@x))+' char(10)'
        set @sql=@sql + ' set @tj'+ltrim(str(@x))+'='''+@a+''''
        exec(@sql)
        set @x=@x+1
    end
      

  3.   

    exec
    动态定义变量是没有用的
      

  4.   

    同意 aierong的,动态定义的变量在动态执行后就没用了,即然不能用那又有何意义呢!
      

  5.   

    谢谢,烛光的代码运行结果运行不出错,但没有实现@tj1='aa',@tj2='aa',@tj3='aa',@tj4='aa'的效果
      

  6.   

    --要看结果容易!但没实际意义!
    declare @x int,@a char(2),@sql varchar(8000)
    set @x=1
    set @a='aa'
    while @x<5
    begin
        set @sql='declare @tj'+ ltrim(str(@x))+' char(10)'
        set @sql=@sql + ' set @tj'+ltrim(str(@x))+'='''+@a+''''
        set @sql=@sql+' select @tj'+ltrim(str(@x))
    exec (@sql)
        set @x=@x+1
    end
      

  7.   

    谢谢楼上,也就是说用exec定义的变量,离开这一句,就不承认了,是不是,有没有办法解决!!