日期:2014-05-18  浏览次数:20646 次

关于存储过程参数

一个获取数据行的存储过程,传进一个参数作为“ID”字段数据过滤条件,但我传入的条件可能不只一个ID而是多个ID,希望列出符合条件的多个ID的信息,请问怎么处理?
是将参数数据类型设为   nvarchar   ,要传入的ID用逗号隔开,存储过程把用逗号隔开的ID字符串分解为一个临时表,再把这个临时表联接到要查询的主表将数据查询出来吗?
还有没有其他方法?

------解决方案--------------------
不用那麼複雜,寫個例子給你看下

--假設傳入的字符串為 '1,2,3 '這種格式

--建立測試環境
Create Table TEST
(ID Int,
Name Varchar(10))
Insert TEST Select 1, 'A '
Union All Select 2, 'B '
Union All Select 3, 'C '
Union All Select 4, 'D '
Union All Select 5, 'E '
GO
--建立存儲過程
Create Procedure SP_TEST(@ID Varchar(100))
As
Begin
Select * From TEST Where CharIndex( ', ' + Rtrim(ID) + ', ' , ', ' + @ID + ', ') > 0
End
GO
--測試
EXEC SP_TEST '1,3,5 '
GO
--刪除測試環境
Drop Table TEST
Drop Procedure SP_TEST
GO
--結果
/*
ID Name
1 A
3 C
5 E
*/
------解决方案--------------------
上面的如果碰到id是字符的,并且值是00.01.01,00.01.02,00.01.03这样的也行么?