使用存储过程中的Select query为单个变量分配多个行

时间:2011-07-05 13:40:24

标签: sql-server

我的查询是使用Select为单个变量分配多行 在存储过程中查询 例如: 我从Employee表中获得了10个(比如1到10个)员工ID 声明@id int

select @id =EmpId from Employee

select @id

这将返回10行(即员工ID,假设a中有10行 table)现在我的问题是我将如何在单个变量中获取所有行 并逐一使用该员工ID进行一些计算。

4 个答案:

答案 0 :(得分:14)

您不能将10条记录插入一个变量 你能做的是:

declare @id table (id int)

insert into @id (id)
select EmpId from Employee

select * from @id

我们在这里做的是创建一个表变量,它将1到10作为单独的行插入。你现在可以随桌做任何你想做的事。

答案 1 :(得分:2)

试试这个:

 declare @tmp table(EmpId int)

    insert into @tmp
    select EmpId From Employee

update Employee
set IsActive = 1
where EmpID in (
Select EmpId from @tmp)

答案 2 :(得分:1)

您可以将每个行压缩成一个变量,但是当您想逐个处理输出时,我建议您避免使用这种方法:

{{1}}

答案 3 :(得分:0)

如果需要逐个处理行,则游标将非常有用。

Here's a tutorial for how to use a cursor.