存储过程传递参数问题
我在存储过程中要实现类似下面语句的功能
select * from t where c in (1,2,3,4)
其中in 后面的内容也就是1,2,3,4我想作为参数传递进去
类似于
declare @p as ***
select * from t where c in @p
问题:
1.这样可以实现吗?
2.@p声明为什么类型?怎样转换?
3.如果这样不切实际,有那些效率较高的替代方法??
各位帮忙啊.....
------解决方案--------------------1.可以实现
2. varchar 类型
------解决方案--------------------declare @p varchar(100)
set @p= '1,2,3,4 '
exec ( 'select * from t where c in ( '+@p+ ') ')
------解决方案--------------------declare @id varchar(1000)
declare @sql nvarchar(4000)
set @id= '1,2,4,5,6,7,8,9,10 '
set @sql=N 'select * from product where proid in ( '+@id + ') '
exec sp_executesql @sql
------解决方案--------------------CREATE PROCEDURE my_proc
@p varchar(100)
AS
exec( 'select * from t where c in ' + @p)
GO
exec my_proc '(1,2,3,4) '