2013-05-22 1 views
1

삽입 EXEC 문은, 내가 세 가지 절차 MainProcedure, Procedure1이

이 난 그냥 선택 문이 Procedure1에서

1 Procedure2

),

) Procedure2에서 Procedure1를 호출 오전에 출력 삽입을 중첩 될 수 없습니다 나는 Procedure2를 호출하고 주요 절차에서)

3 #table 및 오류

에게 메시지 8164, 수준 16, 상태 1을 던졌습니다 #table에 출력을 삽입하려고 스피, 절차 프로 시저 2, 줄 10 INSERT EXEC 문은 중첩 될 수 없습니다.

참조 용 샘플 절차를 찾으십시오 서버 이름의 세부 사항을 지정하지 않음으로써이 문제를 해결하는 다른 방법은

내가 서버 이름을 지정 사용할 필요가 어디 OPENROWSET을 사용하여이 문제를 해결 할 수있다

Create Proc Procedure1 
    As 
    Begin 
    Select 'Arun' Name, 'Pollachi' Place 
    Union 
    Select 'Vedaraj' Name, 'Devakottai' Place 
    End 
    Go 



    Create Proc Procedure2 
    As 
    Begin 
    Create Table #Table1 
    (
    Name Varchar(50), Place Varchar(50) 
    ) 
    INSERT #Table1 
    Exec Procedure1 
    SELECT 'Procedure2' [Source], * FROM #Table1 

    DROP TABLE #Table1 
    End 
    Go 


    Create Proc MainProcedure 
    As 
    Begin 
    Create Table #Table1 
    (
    [Source] Varchar(50), Name Varchar(50), Place Varchar(50) 
    ) 

    INSERT #Table1 
    Exec Procedure2 

    select * from #Table1 

    DROP TABLE #Table1 
    End 
    Go 

내 주 절차를 변경하고 실행하게 만들 수 있습니다. 고마워요! 당신이 말했듯이

+0

보다는 작동 나던 Procedure2 – Rohan

+0

@RS INSERT # 표 Exec을 Procedure1에서 INSERT # 표 Exec을 Procedure1 사용 INSERT INTO # 표 Exec을 Procedure... –

+0

사용 INSERT INTO # 표 Exec을 Procedure1 ... 또는 되세요 이 스레드를보십시오 .http : //social.msdn.microsoft.com/forums/en-US/transactsql/thread/e66c9e71-4424-4cf3-920c-6725ffc40162/ – Rohan

답변

0

은 OPENROWSET는 작동하지만 내가 생각할 수있는 유일한 방법이 아닌 것 같습니다

  1. 변경 테이블에 근거하는 기능
  2. 변경 시저 2에 모두 시저 1 PROC 2

    하십시오 CLR 및 테이블 반환 매개 변수

여기에 대한 추론에 대한 자세한 정보를 원하시면 거기로 주변의 테이블에 합격이

  • 에있는 모든 논리를 넣어

    https://connect.microsoft.com/SQLServer/feedback/details/294571/improve-insert-exec http://sqlblog.com/blogs/adam_machanic/archive/2009/06/25/the-hidden-costs-of-insert-exec.aspx