2012-11-30 4 views
1

SQL Server에서 @tableVariable을 반환하거나 출력 할 수 있습니까?
예를 들어 다음 저장 프로 시저의 경우 @TSV 테이블 변수를 반환하려면 어떻게합니까?SQL에서 @tableVariable 반환 또는 출력

ALTER PROCEDURE MyStoredProdecure 
    @Parameter1 INT, 
    @Parameter2 INT 
AS 
    BEGIN 

    DECLARE @TSV TABLE 
    (
     Transition_Set_Variable_ID INT, 
     Passed BIT 
    ) 

    INSERT INTO @TSV 
    { some data } 

END 

답변

1

직접 할 수 없습니다. 테이블 변수는 READONLY 입력에 유효합니다.

저장 프로 시저에서 반환되는 다른 데이터가없는 경우 끝에 @TSV를 선택하고 호출자가 출력을 캡처하도록 할 수 있습니다 (예 :

ALTER PROCEDURE MyStoredProdecure 
    @Parameter1 INT, 
    @Parameter2 INT 
AS 
    BEGIN 

    DECLARE @TSV TABLE 
    (
     Transition_Set_Variable_ID INT, 
     Passed BIT 
    ) 

    INSERT INTO @TSV 
    { some data } 

    SELECT * FROM @TSV 
END 

발신자

DECLARE @outerTSV TABLE 
(
    Transition_Set_Variable_ID INT, 
    Passed BIT 
); 
insert into @outerTSV 
exec MyStoredProdecure 1, 2; 

또는, SP 당신이 가리 켰을 때, 정말 간단 경우, 대신 테이블 반환 함수 변환합니다.

1

아니요. 그러나 테이블을 반환하는 table valued function을 작성할 수 있습니다.

create function MyTVF 
    @Parameter1 INT, 
    @Parameter2 INT 
returns @tsv table 
    (
     Transition_Set_Variable_ID INT, 
     Passed BIT 
    ) 

AS 
    BEGIN 
    INSERT INTO @TSV 
    { some data } 
    return 
END 
1

표 값 매개 변수는 입력용으로 만 사용할 수 있으며 출력용으로는 사용할 수 없습니다. 최종 목표는 무엇인지에 따라

, 여기에 몇 가지 옵션이 있습니다 :

  1. 변화 테이블을 반환하는 테이블 반환 함수에 sproc에, 다음 다른 문에서 인라인 사용할 수 있습니다

  2. 단지 (당신의 sproc

  3. 반환하는 XML 출력 매개 변수의 끝에서 @TSV 테이블 VAR의 데이터를 SELECT이 제안 지저분 느낌을 얻을 수 있지만, 단지 사용하여 실제로 여러 행을 반환하는 한 가지 방법을 강조하기 위해 출력 매개 변수)

당신이 테이블 반환 함수에 갈 경우 간단 경우 귀하의 경우에 보이는대로, 이상적으로 인라인을 만듭니다 :

예를 들어,

CREATE FUNCTION dbo.Func() 
RETURNS TABLE 
AS 
RETURN 
(
    SELECT Something 
    FROM Somewhere 
    WHERE x = 1 
)