首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程传递参数有关问题

2012-01-12 
存储过程传递参数问题我在存储过程中要实现类似下面语句的功能select*fromtwherecin(1,2,3,4)其中in后面的

存储过程传递参数问题
我在存储过程中要实现类似下面语句的功能
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) '

热点排行