通过存储过程创建和访问 TempDB 中的表
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
不支持通过原生编译存储过程在 TempDB 中创建和访问表。 请改用具有 DURABILITY=SCHEMA_ONLY 的内存优化表或使用表类型和表变量。
有关临时表的内存优化和表变量方案的更多信息,请参阅: 《通过使用内存优化获得更快的临时表和表变量》。
下面的示例演示如何将使用包含三列(ID、ProductID、Quantity)的临时表替换为使用 dbo.OrderQuantityByProduct 类型的表变量 @OrderQuantityByProduct:
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