在一个表中使用两个参数进行搜索,其中一个是整数列表

问题描述:

我想创建一个存储过程以在我的web api中使用ASP.NET和C#。我那里有三列像这样的表:在一个表中使用两个参数进行搜索,其中一个是整数列表

Id |TranName|ConfigName 
---|--------|---------- 
10 |ABC  |abcd 
11 |BDE  |bdef 
12 |FGH  |fghi 
13 |HIJ  |hijk 

的问题是,我使用另一个存储过程返回,我不得不使用搜索上表与TranName沿整数列表。因此,举例来说,给定一个整数列表9,10,11,12,13和TranName BDE找到相应的ConfigName(在这种情况下,我期望它匹配11为Id然后BDE为TranName并返回bdef作为ConfigName。

我对存储过程的代码如下所示。我创建一个表被用作一个参数来搜索在TransTable。

CREATE TYPE dbo.ScrapeTranList 
AS TABLE 

(
    scrapeTranId int 
); 
GO 
CREATE PROCEDURE [dbo].[GetConfigNameById] 
    -- Add the parameters for the stored procedure here 
    @list AS dbo.ScrapeTranList READONLY, 
    @TransName varchar = null 
AS 
BEGIN 
    SET NOCOUNT ON; 
select ConfigName 
from TransTable as T 
where T.TranName = @TransName AND T.Id IN @list 
END 

有人可以帮我解决存储过程的代码?

+0

为什么不直接传入逗号分隔列表作为参数或更好,还是表参数? – scsimon

+0

@scsimon我不明白你在提议什么。 – Koolkirtzz

+0

检查您的索引候选人是创建索引TransTable(TranName)include(Id) –

您应该将您的表加入如下所示的表值参数中:

select ConfigName 
from TransTable as T join @list L 
     on T.Id = L.scrapeTranId 
where T.TranName = @TransName 
+0

是的!这就是我需要的。谢谢! – Koolkirtzz