LocalDB 是否支持临时表?

use*_*480 8 sql-server t-sql tempdb temporary-tables sql-server-localdb

#LocalDB 实例是否支持SQL Server 临时表(以 为前缀)?

Ran*_*gen 10

我无法回答所有版本,但对于 SQL Server 2012 直到 SQL Server 2017,我确信它们是受支持的

LocalDB 具有与 SQL Server Express 相同的可编程功能。

SQL Server Express LocalDB 是 Express 的轻量级版本,具有所有可编程功能,但在用户模式下运行,并且具有快速、零配置的安装和简短的先决条件列表。

来源

然后,在上一点的基础上,针对 SQL Server express 2012 T-SQL 语法

Express 支持您在任何版本的 SQL Server 中找到的相同 T-SQL 语言元素。您不仅可以对数据库发出数据操作语言查询,还可以运行数据定义语言语句来创建视图、触发器、游标和存储过程等对象

来源

测试(SQL Server 2017)

在此处输入图片说明

USE testdb
GO
CREATE TABLE #temp (id int , value nvarchar(255));

INSERT INTO #temp( id ,value)
SELECT 5, 'bla';

SELECT * FROM #temp;
Run Code Online (Sandbox Code Playgroud)

结果

id  value
5   bla
Run Code Online (Sandbox Code Playgroud)

将数据库的兼容模式更改为 100 (2008) 时,临时表也有效。


Sol*_*zky 6

是的,所有形式的临时对象(本地临时表、全局临时表、表变量、本地临时存储过程和全局临时存储过程)在所有版本的 SQL Server Express LocalDB 中都可用。

我已经对 2012、2014、2016 和 2017 版本中的这 5 种对象类型中的每一种执行了以下简单测试,并且没有收到任何错误。

CREATE TABLE #LocalTempTable (Col1 INT);
SELECT * FROM #LocalTempTable;


CREATE TABLE ##GlobalTempTable (Col1 INT);
SELECT * FROM ##GlobalTempTable;


DECLARE @TableVariable TABLE (Col1 INT);
SELECT * FROM @TableVariable;


GO
CREATE PROCEDURE #LocalTempProc
AS
SELECT 1;
GO
EXEC #LocalTempProc;

GO
CREATE PROCEDURE ##GlobalTempProc
AS
SELECT 2;
GO
EXEC ##GlobalTempProc;
Run Code Online (Sandbox Code Playgroud)

此外,如果这些不可用,SQL Server 甚至可能不会启动,因为它们用于系统存储过程、在 中找到的功能msdb等。