[英]If possible to Insert Temp Table. Via Dynamic Query
我有一張這樣的表:
IF OBJECT_ID('tempdb..#A') IS NOT NULL
DROP TABLE #A
CREATE TABLE #A (AccountID BIGINT,MemberID VARCHAR(12),FirstName VARCHAR(50),LastName VARCHAR(50))
INSERT INTO #A VALUES('32323','Test3','Last4','999122'),('192506','999158','Vmtestone','Diamond')
SELECT * FROM #A
是否可以使用動態查詢插入到另一個臨時表中
SELECT * INTO Statement
我試過這個代碼:
DECLARE @B NVARCHAR(MAX)
SET @B=('SELECT * INTO #B FROM #A')
EXEC (@B)
SELECT * FROM #B
但我有這樣的錯誤
無效的對象名稱“#B”。
#B
只存在於動態查詢的范圍內,所以你不能從它外面選擇。
將您的代碼更改為:
DECLARE @B NVARCHAR(MAX)
SET @B=('SELECT * INTO #B FROM #A; SELECT * FROM #B')
EXEC (@B)
它應該工作。
您可以使用全局臨時表。 只需將# 替換為##
IF OBJECT_ID('tempdb..##A') IS NOT NULL
DROP TABLE ##A
IF OBJECT_ID('tempdb..##B') IS NOT NULL
DROP TABLE ##B
CREATE TABLE ##A (AccountID BIGINT,MemberID VARCHAR(12),FirstName VARCHAR(50),LastName
VARCHAR(50))
INSERT INTO ##A VALUES('32323','Test3','Last4','999122'),
('192506','999158','Vmtestone','Diamond')
SELECT * FROM ##A
DECLARE @B NVARCHAR(MAX)
SET @B=('SELECT * into ##B FROM ##A')
print(@B)
EXEC(@B)
SELECT * FROM ##B
由於單個#
創建了一個本地臨時表,它在EXECUTE
語句中不可用。 您可以使用全局臨時表在范圍之外訪問它
IF OBJECT_ID('tempdb..#A') IS NOT NULL
DROP TABLE #A
IF OBJECT_ID('tempdb..##B') IS NOT NULL
DROP TABLE ##B
CREATE TABLE #A (AccountID BIGINT,MemberID VARCHAR(12),FirstName VARCHAR(50),LastName VARCHAR(50))
INSERT INTO #A VALUES('32323','Test3','Last4','999122'),('192506','999158','Vmtestone','Diamond')
SELECT * FROM #A
DECLARE @B NVARCHAR(MAX)
SET @B = 'SELECT * INTO ##B FROM #A'
EXEC (@B)
SELECT * FROM ##B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.