我的問題與這個舊問題相同,但創建一個記憶體表而不是臨時表: Best way to create a temp table with same columns and type as a Permanent table
我試過這個,因為它是舊問題中公認的答案,但它不起作用(我認為這是因為必須宣告表變數):
select top 0 *
into @mymemorytable
from myrealtable
它拋出該例外:
訊息 102 級別 15 狀態 1 第 2 行 '@memorytable' 附近的語法不正確。
我也嘗試將表變數宣告為declare @mymemorytable as table();,但當然它會引發例外:
訊息 102 級別 15 狀態 1 第 1 行 ')' 附近的語法不正確。
有沒有辦法在不宣告詳細說明所有欄位和型別的表變數的情況下實作它?獲得它的最佳方式是什么?
謝謝
uj5u.com熱心網友回復:
我認為你能做的最多是這樣的:
CREATE TYPE dbo.MyTableType
AS TABLE
(
Column1 int
, Column2 int
)
GO
DECLARE @InMemTable dbo.MyTableType
;
INSERT INTO @InMemTable VALUES (1,1), (1,2), (2,3)
;
SELECT * from @InMemTable
;
uj5u.com熱心網友回復:
@table 的宣告中沒有列。您需要輸入“myrealtable”的結構。
如果您想跳過該部分,您需要使用表值引數的臨時表。
IE
SELECT *
INTO #table
FROM myrealtable
Alos,一旦完成臨時表就洗掉它被認為是一種很好的做法。使用 SELECT * 而不是列出所有列也被認為是不好的做法:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362301.html
標籤:sql-server 查询语句
