3

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'.
4

1 回答 1

6

Azure SQL 数据仓库不支持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

本文的“模块化代码”部分提供了一个类似的示例。这只是做事的顺序略有不同。

于 2016-11-17T14:06:35.563 回答