0

我想創建一個存儲過程以在我的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) –

回答

3

您應該將您的表加入如下所示的表值參數中:

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

是的!這就是我需要的。謝謝! – Koolkirtzz

相關問題