Hi all,

The below will give an error like :

FORALL j IN 1 .. pi_tab_device.COUNT
INSERT INTO a_testing
(
testing_id
,flag)
VALUES
(tab_testing_id(j)
,tab_flag(pi_tab_id_(j)));

But when I did like this, I got an error like PLS-00801 Internal Error.

PLS-00102 parser stack overflow because nesting is too deep

Cause: The parser, which checks the syntax of PL/SQL statements, uses a data structure called a stack; the number of levels of nesting in the PL/SQL block exceeded the stack capacity.

Action: Reorganize the block structure to avoid nesting at too deep a level. For example, move the lowest-level sub-block to a higher level.


So i thought that this is becaz of the bulk insert . So once I remove forall to for …loop….end loop….there is no Internal error.

FOR j IN 1 .. pi_tab_device.COUNT LOOP
INSERT INTO a_testing
(
testing_id
,flag)
VALUES
(tab_testing_id(j)
,tab_flag(pi_tab_id_(j)));
END LOOP;

Now i didnt get the error. it is getting inserted properly.

I wanted to know that y is this happening.What is the constraint in using FORALL. What is the datastructure being used for FORALL. Where to find more details abt the internal structure of FORALL.

Thanks in advance,
Swarna