楼主这样写是没有用的
如若你想把字段名或者表名作参数可以这样样子
写一个存储过程 如下
ceeate proc test
@A varchar(20),@B varhcar(20)
as
declare @sql varchar(4000)
begin
set @sql='select * from info where '+ @A+'='+@B
exec @sql
end
这样才可以,具体什么原因很复杂,涉及到数据库的具体编译策略,如果楼主有兴趣可以,看看数据库的设计原理
没有你这么写的
从来都是select * from info where 字段=@B
没听说过把字段赋值的
而且这是存储过程 你前边定义了没?
ceeate proc a
@a char(10)
as
select * from info where 字段=@a
这个明显是要使用动态的方法写的
这里需要注意你的 @A表示的字段是什么类型的
如果@A是字符型的字段,@B是字符型的参数 可以这样:
exec('select * from info where '+@A+'='''+@B+'''')
如果@A是数字型的字段,@B是数字型的参数 ,可以这样
declare @s varchar(8000)
set @s='select * from info where '+@A+'='+rtrim(@B)
exec(@s)
select * from info where @A='@B';
@B用英文的单引号引起来