如何将选择列存储在变量中?
我尝试过这个,但它给我一个错误“语法不正确”:
declare @EmpId int
SELECT dbo.Employee.Id as @EmpId FROM dbo.Employee
select @EmpID = ID from dbo.Employee
或者
set @EmpID =(select id from dbo.Employee)
请注意,选择查询可能会返回多个值或行。因此您可以编写一个必须返回一行的选择查询。
如果您想向一个变量(MS SQL)添加更多列,可以选择使用表定义变量
DECLARE @sampleTable TABLE(column1 type1)
INSERT INTO @sampleTable
SELECT columnsNumberEqualInsampleTable FROM .. WHERE ..
由于Oracle等中不存在表类型变量,因此您必须定义它:
DECLARE TYPE type_name IS TABLE OF (column_type | variable%TYPE | table.column%TYPE [NOT NULL] INDEX BY BINARY INTEGER;
-- 然后声明一个该类型的 TABLE 变量:
variable_name type_name;
-- 为 TABLE 变量赋值:
variable_name(n).field_name := 'some text'
;
-- 其中 'n' 是索引值
假设这样的查询将返回一行,您可以使用其中之一
select @EmpId = Id from dbo.Employee
或者
set @EmpId = (select Id from dbo.Employee)
这是给变量赋值的方法:
SELECT @EmpID = Id
FROM dbo.Employee
但是,上述查询返回多个值。 您需要添加一个
WHERE
子句才能返回单个 Id
值。
值得注意的是,您必须将 select 语句中的所有字段分配给变量,或者根本不这样做。
SQL Server 不支持仅将某些字段分配给变量。