從預存程序建立及存取 TempDB 中的資料表

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

不支援從原生編譯預存程序建立及存取 TempDB 中的資料表。 請改用 DURABILITY=SCHEMA_ONLY 的記憶體最佳化資料表,或改用資料表類型和資料表變數。

如需暫存資料表記憶體最佳化及資料表變數案例的詳細資訊,請參閱:使用記憶體最佳化加快暫存資料表與資料表變數的速度

下列範例示範如何使用 dbo.OrderQuantityByProduct 類型的 @OrderQuantityByProduct 資料表變數來取代暫存資料表 (其具有 ID、ProductID、Quantity 這三個資料行):

CREATE TYPE dbo.OrderQuantityByProduct   
  AS TABLE   
   (id INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=100000),   
    ProductID INT NOT NULL,   
    Quantity INT NOT NULL) WITH (MEMORY_OPTIMIZED=ON)  
GO  
CREATE PROCEDURE dbo.usp_OrderQuantityByProduct   
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER  
AS BEGIN ATOMIC WITH   
(  
    TRANSACTION ISOLATION LEVEL = SNAPSHOT,  
    LANGUAGE = N'ENGLISH'  
)  
  -- declare table variables for the list of orders   
  DECLARE @OrderQuantityByProduct dbo.OrderQuantityByProduct  
  
  -- populate input  
  INSERT @OrderQuantityByProduct SELECT ProductID, Quantity FROM dbo.[Order Details]  
  end  

另請參閱

原生編譯預存程序的移轉問題
記憶體中的 OLTP 不支援 Transact-SQL 建構