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

怎样让存储过程接收多个参数?解决办法

2012-02-12 
怎样让存储过程接收多个参数??CREATEPROCEDUREsp_test@idintASselect*fromdb_testwhereid@idGO这样只能接

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

热点排行