比如我有一个用户表user
字段 name
以下是我写的存储过程create procedure find
@name char(10)
 as 
 select @name as lieming from admin where name=@nameexec  find '123';
这样肯定没有问题
列名 lieming
     123
我想通过这样的方式,但会出错create procedure find
@name char(10),
@column char(10)
 as 
 select @name as @column from admin where name=@name
exec  find '123','lieming';求助各位我想把列名自己传参数,应该怎么写呢

解决方案 »

  1.   

    create procedure find
    @name varchar(10),
    @column varchar(10)
     as 
    exec ('select '''+@name+''' as '+@column+' from admin where name='''+@name+'''')
      

  2.   


    use northwinddeclare @f1 varchar(10),
            @f2 varchar(10),
            @str varchar(100)
    set @f1='第一列'
    set @f2='第二列'set @str='select CustomerID as ' + @f1 +',CompanyName as ' + @f2 +' from Customers'
    print @str
    exec (@str)
      

  3.   


    use northwinddeclare @f1 varchar(10),
            @f2 varchar(10),
            @c1 varchar(50),
            @c2 varchar(50),
            @str varchar(100)set @c1='CustomerID'
    set @c2='CompanyName'
    set @f1='第一列'
    set @f2='第二列'set @str='select ' + @c1+' ' + @f1 +',' + @c2 + ' ' + @f2 +' from Customers'
    print @str
    exec (@str)
      

  4.   

    alter procedure find 
    @name char(10), 
    @column char(10) 
    as
    declare @sql varchar(4000)
    set @sql='select '+@name+' as '+@column+' from admin where name=@name'

    exec(@sql)