我正在研究 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 19c 数据库,而这些代码示例仅适用于 21c 版本。问题解决了。