[英]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.