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

时间:2017-09-26 19:28:28

标签: c# sql-server stored-procedures asp.net-web-api table-valued-parameters

我正在尝试使用ASP.NET和C#创建一个在我的web api中使用的存储过程。我有一个表格,其中有三列如下:

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。< / p>

我对存储过程的代码如下所示。我正在创建一个表,用作在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

有人可以帮我修复存储过程代码吗?

1 个答案:

答案 0 :(得分:3)

您应该将表格加入表值参数,如下所示:

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