如何在查询中编写包含多个参数的存储过程?

Muj*_*sir 4 sql t-sql sql-server sql-server-2005 sql-server-2008

我想写一个像这样的存储过程

Create Proc dbo.GetApplicantsByIDs

as

Select * from Applicants where ID in (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

如何将1,2,3作为参数传递,这些ID可能是多个.

Mik*_*son 6

您可以将您的ID作为XML发送给SP.

create procedure dbo.GetApplicantsByIDs
  @IDList xml
as

-- Table to hold the id's
declare @IDs table(ID int primary key)

-- Fill table with id's  
insert into @IDs(ID)
select X.ID.value('.', 'int')
from @IDList.nodes('/i') as X(ID)

select * 
from Applicants 
where ID in (select ID 
             from @IDs)
Run Code Online (Sandbox Code Playgroud)

参数字符串应如下所示:

'<i>1</i><i>2</i><i>3</i>'
Run Code Online (Sandbox Code Playgroud)