怎样让存储过程接收多个参数??
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