具有多个迭代控制的 Oracle PL/SQL FOR 循环会导致语法错误

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

我正在研究 PL/SQL 并尝试在 FOR 循环中运行多个迭代控制的一些示例。我直接从 Oracle PL/SQL 文档中获取这些示例 - https://docs.oracle.com/en/database/oracle/oracle-database/23/lnpls/plsql-control-statements.html#GUID-C4BC9960 -5945-4646-BBDE-DC00346F8702 所以我相信它们在语法上应该是正确的,但是每个具有超过 1 次迭代控制的示例代码都会导致相同的语法错误。 任何建议将不胜感激,因为我已经用尽了我的想法,这让我发疯..

所有这些:

DECLARE
   i PLS_INTEGER;
BEGIN
   FOR i IN 1..3, REVERSE i+1..i+10, 51..55 LOOP
      DBMS_OUTPUT.PUT_LINE(i);
   END LOOP;
END;
BEGIN
   FOR i IN 1..3, 6..8
   LOOP
      DBMS_OUTPUT.PUT_LINE(i);
   END LOOP;
END;
BEGIN
   FOR i IN 1, REPEAT i*2 WHILE i < 100 LOOP
      DBMS_OUTPUT.PUT_LINE(i);
   END LOOP;
END;

产生同样的错误:

ORA-06550: line 2, column 17:
PLS-00103: Encountered the symbol "," when expecting one of the following:

* & - + / at loop mod remainder rem <an exponent (**)> ||
multiset
Error at Line: 11 Column: 0

错误总是指向逗号的位置,但是删除逗号显然不能解决问题。

oracle plsql oracle-sqldeveloper plsqldeveloper
1个回答
0
投票

事实证明我正在运行 Oracle 19c 数据库,而这些代码示例仅适用于 21c 版本。问题解决了。

© www.soinside.com 2019 - 2024. All rights reserved.