请教大侠们, 在存储过程中如何做到select一个动态字段的值给一个变量?即:
select @M = @FieldName from table1
上述语句肯定不能运行, 用exec(@sql)的方法又不能使用@M.多条语句也行, 只要能解决问题.

解决方案 »

  1.   

    MSSQL是不允许表名和字段名做为参数的.
    有以下办法.
    1、采用全局临时表进行交换。
    2、采用游标进行读取。1、 先exec('select ' + @FieldName + ' as col1 into ##temp1 from table1')
         然后 select @M = col1 from ##temp1   drop table ##temp12、exec('declare mycursor cursor for select ' + @FieldName  + ' from table1')
        open mycursor
        fetch next from mycursor into @M
        close mycursor
        deallcoate mycursor
      

  2.   

    对不起了,我都忘记这里还有个帖子未结了.谢谢楼上,但是我找了一个更好的办法,就是用exec sp_executesql的办法解决了,你也可以试试.