如何将选择列存储在变量中?

问题描述 投票:0回答:4

如何将选择列存储在变量中?

我尝试过这个,但它给我一个错误“语法不正确”:

declare @EmpId int
SELECT  dbo.Employee.Id as @EmpId FROM  dbo.Employee
sql-server sql-server-2008
4个回答
69
投票
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' 是索引值


3
投票

假设这样的查询将返回一行,您可以使用其中之一

select @EmpId = Id from dbo.Employee

或者

set @EmpId = (select Id from dbo.Employee)

2
投票

这是给变量赋值的方法:

SELECT @EmpID = Id
  FROM dbo.Employee

但是,上述查询返回多个值。 您需要添加一个

WHERE
子句才能返回单个
Id
值。


0
投票

值得注意的是,您必须将 select 语句中的所有字段分配给变量,或者根本不这样做。

SQL Server 不支持仅将某些字段分配给变量。

© www.soinside.com 2019 - 2024. All rights reserved.