programing

여러 저장 프로시저의 결과 연합

batch 2023. 8. 4. 22:45
반응형

여러 저장 프로시저의 결과 연합

저장 프로시저가 있습니다. 매번 다른 매개 변수를 사용하여 여러 번 호출해야 합니다.결과를 단일 데이터 세트로 수집하고 싶습니다.이런 일이 가능할까요?

exec MyStoredProcedure 1
UNION
exec MyStoredProcedure 2
UNION
exec MyStoredProcedure 3

위 구문을 사용하려고 했지만 오류가 발생했습니다...

Incorrect syntax near the keyword 'UNION'

제가 다루고 있는 저장 프로시저는 상당히 복잡하고 일종의 "블랙박스"이기 때문에 저장 프로시저의 정의에 들어가 아무것도 변경할 수 없습니다.결과를 모으는 방법에 대한 제안이 있습니까?

SQL Server 2008 R2를 사용하고 있습니다.도와주셔서 감사합니다.

이런 식으로 온도 조절 테이블을 사용해야 합니다.UNION은 SELECT를 위한 것이지 저장된 프로시저를 위한 것이 아닙니다.

CREATE TABLE #foo (bar int ...)

INSERT #foo
exec MyStoredProcedure 1

INSERT #foo
exec MyStoredProcedure 2

INSERT #foo
exec MyStoredProcedure 3

...

저장된 프로시저에INSERT..EXEC..이미 중첩할 수 없습니다.또는 여러 결과 집합.또는 여러 개의 다른 파괴 구조물

사용할 수 있습니다.INSERT EXEC이를 위하여

declare @myRetTab table (somcolumn ...)
insert @myRetTab
exec StoredProcName @param1

그런 다음 테이블 변수에 union을 사용합니다.

이 모든 것을 할 수 있지만, 무엇을 요구하는지 생각해 보십시오...

여러 모수를 sp에 전달하고 서로 다른 모수에 대해 동일한 형식의 결과 세트를 생성하려고 합니다.따라서 실제로 루프를 만들고 저장된 프로세스를 스칼라 데이터로 반복적으로 호출하는 것입니다.

sp를 다시 작성하여 매개 변수 집합을 가져와서 결합된 결과를 제공해야 합니다.그러면 설정 기준 작업을 1회만 수행합니다.

먼저 자신의 유형을 구성하는 한 2008년에는 테이블 변수를 스핀으로 전달할 수 있습니다.

일반 쿼리입니다.

DECLARE @sql nvarchar(MAX)
DECLARE @sql1 nvarchar(MAX)

set @sql = 'select name from abc'

set @sql1 = 'select name from xyz'

EXECUTE(@sql + ' union all ' + @sql1)

안녕하세요 저도 같은 문제가 있었습니다.저는 여기서 해결책을 찾았습니다. 만약 당신이 이렇게 해야 한다면 (이것은 효과가 없을 것입니다.)

exec test1 'Variable1', 'Variable2';
UNION
exec test2 'Variable1', 'Variable2;

두 스토어 절차의 결합 방법:

  1. 테이블로 변수를 만듭니다.

  2. 테이블의 변수에 저장 프로시저를 반환할 모든 열을 정의합니다.

  3. 변수의 결합을 만듭니다. --첫 번째 변수

    declare @table1 as table ( 
        column1 nvarchar(20) ,   
        column2 nvarchar(30),
        column3 nvarchar(50)   )
    

--두 번째 변수

  declare @table2 as table ( 
       column1 nvarchar(20) ,   
       column2 nvarchar(30),
       column3 nvarchar(50)  )Insert into @table1 

-- 스토어 프로시저에서 반환된 데이터를 변수에 입력

exec test1 'Variable1', 'Variable2';
Insert into @table2
exec test2 'Variable1', 'Variable2';

--변수를 사용하여 결합합니다.

   select * from @table1 
    UNION 
   select * from @table2

이 게시물이 이를 이슈로 삼는 다음 동료들에게 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/5292069/union-the-results-of-multiple-stored-procedures

반응형