如何在单条语句中声明并初始化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
相关产品推荐
相关产品推荐

