Yes, that explains it, for 19c:
1) The FOR LOOP variable is always implicitly cast as PLS_INTEGER.
2) The variable declaration has a scope of the FOR LOOP.
3) PLS_INTEGER limits are -2G..2G-1.
Thanks all for the pointers and explanation!
On Tue, Sep 27, 2022 at 12:38 PM Chris Saxon <chris.saxon@xxxxxxxxx> wrote:
The data type for index variables is implicitly PLS_INTEGER
From 21c you can override this in the loop definition:
FOR x NUMBER IN sseq..eseq LOOP
On Tue, 27 Sept 2022 at 18:10, Rich J <rich242j@xxxxxxxxx> wrote:
In 19.16, a dev has a quick anonymous block that fails with "ORA-1426:
numeric overflow". It appears that the FOR...LOOP has a limit of 2G-1. I
can't see where that would be documented or there's some implicit typing
going on that I'm missing. From experimentation:
FOR x IN sseq..eseq LOOP
This works. Bumping the end sequence up by 1 and it fails at the FOR
statement with ORA-1426 and nothing is output, so at compile time. I've
tried adding an explicit declaration of "x", changing them all to
NUMBER(12) or PLS_INTEGER, but still get the same error. I can't find any
reference to this limit at:
Am I missing something (very possible) or is this an undocumented limit?