日期:2014-05-18 浏览次数:20445 次
create proc wsp @name varchar(50), @value varchar(50) as declare @sql varchar(8000) set @sql='select * from 表A where ' + @name + '=' + @value exec(@sql) 调用存储过程:exec wsp '',''
------解决方案--------------------
2楼的做法可行。
不过需要进行数据类型的判断,对于文本类型的
@value要两头加"'"号。
declare @type varchar(50) select @type=name from systypes where xtype=( select xtype from syscolumns where id=object_id(表名) and name=@field ) if charindex('char',@type,1)>0 or charindex('text',@type,1)>0 or charindex('date',@type,1)>0 这是文本类型的 else 非文本类型的
------解决方案--------------------
上面的代码针对于@value值为文本型,如果你的@value值为数值型的话,就可以直接这样:
--下面例子使用NorthWind数据库 use NorthWind declare @name varchar(10) declare @value varchar(10) declare @sql varchar(1000) set @name='EmployeeID' set @value='9' select @sql = 'select * from Orders where '+@name+'='+@value exec(@sql) print @sql