2016-11-17 14 views
1

Azure Data WarehouseにはStored Procedureがあり、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

Azureの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記事の「モジュール化コード」セクションで提供されています。物事を行う順序がちょっと違うだけです。

関連する問題