0

ASP.NET 및 C#을 사용하여 웹 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을 찾습니다.이 경우 Id가 11이고 BName이 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)의 색인을 만듭니다. 포함 (Id) –

답변

3

테이블을 테이블 값 매개 변수로 다음과 같이 조인해야합니다.

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

예! 그게 내가 필요한거야. 고맙습니다! – Koolkirtzz