我表的结构是:
id      int    ---id是主键
name    varchar(50)
memo1   varchar(50)   
存储过程如下:
alter proc pubsel
@table nvarchar(200),
@field varchar(100),
@value varchar(50)
as
exec('select * from ['+@table+'] where ['+@field+']='+@value)
GO
当我调用exec pubsel 'copysource','id','44'的时候是对的
当我调用
exec pubsel 'copysource','name','fsdfsd' 出错了,这样的错误:Invalid column name 'fsdfsd'.
这到底是什么原因呀真是搞的头昏了,那位大哥帮帮忙呀解决了就给分....

解决方案 »

  1.   

    alter proc pubsel
    @table nvarchar(200),
    @field varchar(100),
    @value varchar(50)
    @sql varchar(8000)
    as
    set @sql = 'select * from ['+@table+'] where ['+@field+']='''+@value
    +''''
    exec(@sql)
    GO
      

  2.   

    ALTER proc pubsel
    @table nvarchar(200),
    @field varchar(100),
    @value varchar(50)
    as
    exec('select * from ['+@table+'] where ['+@field+']='''+@value+'''')
    GO
      

  3.   

    --tryalter proc pubsel
    @table nvarchar(200),
    @field varchar(100),
    @value varchar(50)
    as
    exec('select * from ['+@table+'] where ['+@field+']='''+@value+'')
    GO