如何在 Firebird 2.5 程序中正确使用“for”循环?

问题描述 投票:0回答:2

我知道 Firebird 2.5 已被弃用,但我正在处理的项目上运行的是它。我需要构建一个执行

For
循环的过程,但我无法使其工作。

这是示例代码:

CREATE procedure SAMPLE
AS
    DECLARE VARIABLE i INTEGER;
BEGIN
    
    FOR i = 1 TO 4 DO
    BEGIN
        FOR
            SELECT * FROM TABLE
        DO
            SUSPEND;
    END
END

当我执行此代码时,我总是收到与“无效令牌”相关的错误。在上面的代码中,我收到:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 7, column 9.
i. 

我该如何正确使用这个

for
循环?

for-loop delphi firebird firebird2.5
2个回答
0
投票
Firebird 中的

FOR
循环只能用于结果集的迭代。如果您需要迭代其他任何内容 - 使用
WHILE
循环


0
投票

没有

FOR
循环语法允许您使用
INTEGER
变量进行迭代,就像您尝试做的那样。该语法仅支持迭代结果集。根据 2.5 文档,只有 2 种形式的
FOR
循环可用:

FOR SELECT

7.6.11。对于选择

可用。PSQL

用于。 逐行循环选定的结果集

语法

FOR <select_stmt> [AS CURSOR cursorname]
  DO <compound_statement>

FOR EXECUTE

7.6.12。 FOR 执行语句

可用。PSQL

用于。执行动态创建的返回行集的SQL语句

语法

  FOR <execute_statement> DO <compound_statement>

对于您想要完成的任务,您需要使用

WHILE
循环来代替:

CREATE procedure SAMPLE
AS
    DECLARE VARIABLE i INTEGER;
BEGIN
    
    i = 1;
    WHILE (i <= 4) DO
    BEGIN
        FOR
            SELECT * FROM TABLE
        DO
            SUSPEND;
        i = i + 1;
    END
END
© www.soinside.com 2019 - 2024. All rights reserved.