0

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

CURSOR START

SELECT OBJECT, REVENUE

CURSOR END

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

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

4

3 回答 3

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
于 2013-06-10T08:27:09.877 回答
1

Insert返回的值放入临时表/表变量中,然后select在游标之后。

于 2013-06-10T08:22:09.290 回答
1

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

这些是在过程中,出于所有意图和目的,它们的行为类似于表,但不是数据库中的实际表。

也就是说,在 T-SQL 中通常不赞成使用游标逐行填充表,因为一方面,游标可能是真正的性能瓶颈。尝试看看你是否可以以某种方式完全消除光标的使用,是否可以加快和简化代码。

于 2013-06-10T08:28:24.087 回答