SQL Server过程返回多个选择的单个数据集

时间:2013-06-10 08:20:35

标签: php sql sql-server

我在SQL Server 2008中编写了一个存储过程。它包含一个CURSOR,在游标的循环中,一些值被计算并使用SELECT语句发送到输出。如:

CURSOR START

SELECT OBJECT, REVENUE

CURSOR END

问题在于,当执行完成时,它返回每行的多个表。我需要获得包含所有行的单个表。有没有办法在不使用TABLE的情况下实现这一目标?

我想要这样做的主要原因是当我从PHP ODBC执行过程时,我才得到第一行。

3 个答案:

答案 0 :(得分:4)

试试这个

DECLARE @tmp TABLE(field1 VARCHAR(50),field2 VARCHAR(50))
CURSOR START
    INSERT INTO @tmp
        ( field1, field2 )
    SELECT OBJECT, REVENUE

CURSOR END
SELECT * FROM @tmp

答案 1 :(得分:1)

Insert返回的值转换为临时表/表变量,然后从光标后面的select

答案 2 :(得分:1)

您必须使用某种表来存储临时数据。如果您不想使用“真实”数据库表,可以使用temporary tabletable variable

这些构造在过程中,对于所有意图和目的,表现得像一个表,但不是数据库中的实际表。

也就是说,使用游标逐行填充表格在T-SQL中通常是不受欢迎的,因为对于一个游标来说,游标可能是真正的性能瓶颈。试着看看你是否能以某种方式完全消除光标的使用,如果能加速并简化代码的话。