2016-11-17 2 views
1

Azure Data Warehouse에 나는 이 있으며 SELECT 명령의 결과를 반환합니다.Azure 데이터웨어 하우스의 임시 테이블에 저장 프로 시저 결과

Stored Procedure 결과를 임시 테이블에 푸시하는 방법은 무엇입니까?

아래의 쿼리를 시도했는데 오류 메시지가 반환됩니다.

CREATE TABLE #temp 
(name varchar(255), created_date datetime) 
GO 
INSERT INTO #temp 
EXEC sp_testproc 

출력 메시지 :

Msg 103010, Level 16, State 1, Line 3 
Parse error at line: 2, column: 1: Incorrect syntax near 'EXEC'. 

답변

2

푸른 SQL 데이터웨어 하우스가 here에 따라 INSERT ... EXEC을 지원하지 않습니다. 그러나 임시 테이블도 다른 범위를 갖기 때문에 외부의 저장 프로 시저를 볼 수 있습니다. 단순히 저장된 프로 시저 내부에 임시 테이블을 생성하고,이 저장된 프로 시저가 실행되면, 예를 들어 볼 수 있습니다 :

IF OBJECT_ID('dbo.usp_getTableNames') IS NOT NULL DROP PROC dbo.usp_getTableNames; 
GO 

CREATE PROC dbo.usp_getTableNames 
AS 

    -- Drop table if already exists 
    IF OBJECT_ID('tempdb..#tables') IS NOT NULL DROP TABLE #tables; 

    -- Create temp table for viewing outside stored procedure 
    CREATE TABLE #tables 
    (
     [object_id]  INT NOT NULL, 
     name   SYSNAME NOT NULL 
    ) 
    WITH 
    (
     DISTRIBUTION = HASH([object_id]), 
     HEAP 
    ); 


    INSERT INTO #tables 
    SELECT object_id, name 
    FROM sys.tables; 

GO 

-- Run the proc 
EXEC dbo.usp_getTableNames; 
GO 


-- The table table is still available for reading outside the scope of the stored procedure 
SELECT * 
FROM #tables; 

DROP TABLE #tables; 
GO 

유사한 예는 this 문서의 '모듈화 코드'섹션에서 사용할 수 있습니다. 일을하는 순서가 약간 다릅니다.