日期:2014-05-18 浏览次数:20556 次
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