Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将select列存储在变量中?_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 如何将select列存储在变量中?

Sql server 如何将select列存储在变量中?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,如何将select列存储在变量中 我尝试了这个,但它给我带来了一个错误“语法不正确”: 或 请注意,select查询可能返回多个值或多行。因此,您可以编写一个必须返回一行的select查询 如果要向一个变量(MS SQL)添加更多列,可以选择使用表定义的变量 DECLARE @sampleTable TABLE(column1 type1) INSERT INTO @sampleTable SELECT columnsNumberEqualInsampleTable FROM .. WHERE

如何将select列存储在变量中

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

请注意,select查询可能返回多个值或多行。因此,您可以编写一个必须返回一行的select查询

如果要向一个变量(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;
--然后声明此类型的表变量:
variable\u name type\u name

--为表变量赋值:
变量名称(n)。字段名称:='some text'


--其中“n”是索引值

这是如何为变量赋值:

SELECT @EmpID = Id
  FROM dbo.Employee

但是,上面的查询返回多个值。您需要添加一个
WHERE
子句以返回单个
Id
值。

假设这样的查询将返回单个行,您可以使用

select @EmpId = Id from dbo.Employee


Msg 141,级别15,状态1,第19行为变量赋值的SELECT语句不能与数据检索操作结合使用。@Abu-您需要将SELECT列表中的所有列都赋值给变量。不能将向客户端返回结果的普通选择与分配给变量的选择混合使用。很明显,您可以在之后立即选择@var1作为somecol,@var2作为另一个col
。您可以选择五列,但只将一列放入一个临时变量中吗?如果我有多行呢?你会怎么做handle@Abu哈姆扎:你不能。一个变量只能保存一个值。如果查询返回多行,您希望将哪个值放在变量中?在我的情况下,我有两个列名,我应该保留1)EmpId,2)RegId-它可能有多行或只有一行,我保留在一个变量中以与其他列名进行比较。。不确定这是否是正确的方法。添加“top 1”以查询是否有多行,或添加“where id=…”条件如果其他答案没有帮助,因为您希望处理多行,则了解您希望对EmpIds执行的操作将有所帮助。
DECLARE TYPE type_name IS TABLE OF (column_type | variable%TYPE | table.column%TYPE [NOT NULL] INDEX BY BINARY INTEGER;
SELECT @EmpID = Id
  FROM dbo.Employee
select @EmpId = Id from dbo.Employee
set @EmpId = (select Id from dbo.Employee)