为什么要EXEC??直接这样就可以啊
DECLARE @name1 varchar(50),
        @name2 varchar(50)
SET @name1='Gary'
SET @name2 = @name1

解决方案 »

  1.   

    我举的那个例子当然是可以不用,但我实际上遇到的一个问题,需要用变量做列名,就得使用EXEC()呀。
    太阳雨能说详细点吗?我对存储过程不是很熟悉
      

  2.   

    表述的不清楚,不知道你是不是要这种。eg:--存储过程带返回值
    create proc test
        @tablename varchar(20),  --表名
        @total int output        --返回值
    as
    begin
       declare @sqltext nvarchar(2000)
       set @sqltext='select @a=count(*) from '+@tablename  
       exec sp_executesql @sqltext,'@a int output',@total    --返回@total 
    end
    GO
    Drop proc test
    GO
      

  3.   

    那就在全部裡面定義了
    EXEC('DECLARE @name1 varchar(50),@name2 varchar(50) SET @name1=''Gary'' SET @name2 = @name1')
    不過這要產不太好。可以有sp_executesql