我是编程新手,所以我不知道这个问题是怎么回事。
我正在做的是首先在不同的查询中找到@userid值,然后在我做
之后select a,b
from tableA
where userid = @userid
and active=1
and payments=1
然后它执行以显示行数(比方说:10行)
但是当我喜欢下面的内容时,我只得到1行(我想得到所有10行):
declare @A varchar(10)
declare @B bigint
select @A=a,@B=b
from tableA
where userid=@userid
and active=1
and payments=1
Select @A,@B
所以,我正在寻求帮助,我该怎么做。我必须像第2步一样,因为我必须运行其他查询,@ A和@B
答案 0 :(得分:2)
是的,因为那些是标量变量,只能容纳1个项目,在您的情况下,它将保存最后一行的值。您可能想要考虑使用表变量。像
DECLARE @tab1 table(
A varchar(10),
B bigint );
然后填写
insert into @tab1(A,B)
select a, b
from tableA
where userid=@userid
and active=1
and payments=1
现在从中选择
select * from @tab1;
答案 1 :(得分:0)
您似乎正在尝试使用tableA的所有a和b值执行某些操作。
如果记录数量很少,您可以使用游标,否则使用WHILE循环来读取每条记录。
Declare @a varchar(10)
Declare @b varchar(10)
DECLARE MyCursor CURSOR FOR
select a, b
from tableA
where userid=@userid
and active=1
and payments=1
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @a, @b
WHILE @@FETCH_STATUS = 0
BEGIN
Select @a, @b
FETCH NEXT FROM MyCursor INTO @a, @b
END
CLOSE MyCursor
DEALLOCATE MyCursor