日期:2014-05-19  浏览次数:20453 次

怎样让存储过程接收多个参数??
CREATE   PROCEDURE   sp_test   @id   int   AS   select   *   from   db_test   where   id=@id
GO

这样只能接收一个id,查出一行记录
但是我想从另外一个表中读一个字符串,字段值形式为(1,3,5,8),然后传入存储过程中,查出   1,3,5,8   对应的数据
请问应该怎么做??

------解决方案--------------------
declare @s varchar(1000),@s2 varchar(1000)
set @s2 = '1,2,3 '
set @s= 'select * from a where a.id in ( ' + @s2 + ') '
select @s
exec (@s)
------解决方案--------------------
测试通过,因为你接收一字串,所以将@id类型变了

CREATE PROCEDURE sp_test @id varchar(500) AS
exec( 'select * from db_test where 序号 in ( '+@id+ ') ')
-----------------------------------------------
exec sp_test '1,3,5,8 '
------解决方案--------------------
不用In來判斷,改用CharIndex

CREATE PROCEDURE sp_test @id Varchar(100)
AS
select * from db_test where CharIndex( ', ' + Rtrim(id) + ', ', ', ' + @id + ', ') > 0
GO