복붙노트

[SQL] 여러 개의 저장 프로 시저의 UNION 결과

SQL

여러 개의 저장 프로 시저의 UNION 결과

나는 다른 PARAMATERS 각 시간이 지날 여러 번 호출하는 저장 프로 시저 I 필요가있다. 나는 하나의 데이터 세트로 결과를 수집하고 싶습니다. 이 수 같은 것입니다 ...

exec MyStoredProcedure 1
UNION
exec MyStoredProcedure 2
UNION
exec MyStoredProcedure 3

나는 위의 구문을 사용하여 시도했지만 오류가 발생했습니다 ...

Incorrect syntax near the keyword 'UNION'

내가 저장 프로 시저 및 변경 아무것도의 정의에 얻을 수 있도록 내가 처리하고있는 저장 프로 시저, 꽤 복잡하고 나에게 "블랙 박스"의 일종이다. 결과를 함께 수집하는 방법에 대한 어떤 제안?

나는 SQL Server 2008 R2를 사용하고 있습니다. 어떤 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    1.이 같은 임시 테이블을 사용해야 할 것입니다. UNION은 SELECT들에 대한 프록 저장되지 않습니다

    이 같은 임시 테이블을 사용해야 할 것입니다. UNION은 SELECT들에 대한 프록 저장되지 않습니다

    CREATE TABLE #foo (bar int ...)
    
    INSERT #foo
    exec MyStoredProcedure 1
    
    INSERT #foo
    exec MyStoredProcedure 2
    
    INSERT #foo
    exec MyStoredProcedure 3
    
    ...
    

    그리고 저장 발동이 중첩 될 수없는 이미 .. INSERT..EXEC가 없습니다 바랍니다. 또는 여러 결과 집합. 또는 여러 가지 다른 차단 구조

  2. ==============================

    2.당신은이에 대한 INSERT EXEC를 사용할 수 있습니다.

    당신은이에 대한 INSERT EXEC를 사용할 수 있습니다.

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

    그런 다음 테이블 변수 또는 변수 조합을 사용합니다.

  3. ==============================

    3.당신은이 모든 것을 할 수 있지만, 당신이 요구하는 것에 대해 생각할 수 ......

    당신은이 모든 것을 할 수 있지만, 당신이 요구하는 것에 대해 생각할 수 ......

    당신은 SP에 여러 매개 변수를 전달해야하고 다른 PARAMS 동일한 형식 결과 세트를 생성합니다. 당신이 그래서, 효과, 루프를 만들고 반복 스칼라 데이터와 저장된 프로 시저를 호출.

    당신이해야 할 것은 매개 변수의 세트를 가지고 결합 된 결과를 제공 할 수 있도록 SP를 다시 작성합니다. 그럼 당신은 단지 1 개 세트를 기반으로 동작을한다.

    먼저 자신의 유형을 만들어 같이 긴으로 2008에서 SP에 테이블 변수를 전달할 수 있습니다.

  4. ==============================

    4.여기에 일반 쿼리입니다

    여기에 일반 쿼리입니다

    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)
    
  5. from https://stackoverflow.com/questions/5292069/union-the-results-of-multiple-stored-procedures by cc-by-sa and MIT license