我知道 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
循环只能用于结果集的迭代。如果您需要迭代其他任何内容 - 使用 WHILE
循环。
没有
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