Результат хранимой процедуры во временной таблице в хранилище данных Azure

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

person Suresh    schedule 17.11.2016    source источник
comment
Привет, ты нашел решение? Меня особенно интересует продвижение результатов системы sp.   -  person user2820173    schedule 11.02.2020
comment
Нет у меня нет. Кроме того, в настоящее время я не работаю в Azure DW.   -  person Suresh    schedule 13.02.2020


Ответы (1)


Хранилище данных SQL Azure не поддерживает 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

Аналогичный пример доступен в разделе «Модулирующий код» в этой статье. Просто это немного другой порядок действий.

person wBob    schedule 17.11.2016
comment
есть ли способ сохранить результаты системы Sproc, скажем, sp_spaceused? - person James Cooke; 06.12.2018