簡體   English   中英

存儲過程結果到Azure數據倉庫中的臨時表中

[英]Stored Procedure result into temp table in Azure Data Warehouse

Azure Data Warehouse ,我有一個Stored Procedure ,它將返回SELECT命令的結果。

如何將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'.

根據此處的說明, Azure SQL數據倉庫不支持INSERT ... EXEC 但是,臨時表的作用域也不同,這意味着可以在創建臨時表的存儲過程之外查看它們。 只需在存儲的proc內創建臨時表,存儲的proc執行后就可以查看它,例如:

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

一個類似的例子是在的“模塊化代碼”部分可用文章。 這只是做事的順序略有不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM