You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单条语句中声明并初始化SQL Server表变量?

SQL Server表变量的声明与初始化正确写法

SQL Server里没法像标量变量那样用DECLARE @Var Type = Value的方式直接初始化表变量,你尝试的写法不符合语法规范,而且因为Id是IDENTITY自增列,直接插入数值还会触发错误。

给你两种可行的写法:

方法一:声明后直接INSERT(最常用)

DECLARE @USERS TABLE (
    Id INT IDENTITY PRIMARY KEY,
    Status INT NOT NULL,
    LoginId VARCHAR(64) NOT NULL
);

-- 插入数据时跳过IDENTITY列,让数据库自动生成Id值
INSERT INTO @USERS (Status, LoginId)
VALUES 
    (1, 'asdf'),
    (2, 'asdf');

方法二:结合表值构造函数与SELECT插入

如果需要更灵活的数据源(比如从临时数据集导入),可以用这种方式:

DECLARE @USERS TABLE (
    Id INT IDENTITY PRIMARY KEY,
    Status INT NOT NULL,
    LoginId VARCHAR(64) NOT NULL
);

INSERT INTO @USERS (Status, LoginId)
SELECT Status, LoginId
FROM (VALUES
    (1, 'asdf'),
    (2, 'asdf')
) AS TempData(Status, LoginId);

注意:因为Id是自增主键,插入时不要指定该列的值,否则会报错(除非你特意开启IDENTITY_INSERT,但一般没必要这么做)。

内容的提问来源于stack exchange,提问作者mnemotronic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:59:54