File 嵌套开始于脚本文件,脚本执行期间堆栈溢出

File 嵌套开始于脚本文件,脚本执行期间堆栈溢出,file,plsql,scripting,File,Plsql,Scripting,最近,我有一个从excel工作表生成脚本文件的要求。我几乎能完成任务。但是问题是本地变量在脚本文件中的使用越多。由于本地变量越多,在toad中执行脚本文件时,在插入脚本期间抛出错误PL/SQL 102堆栈溢出异常。 下面是语法 "declare Q2 integer; begin select table1_seq.nextval into Q2 from dual; insert into table1 values(Q2,sysdate,'BATCH',sysdate,'BATCH',sys

最近,我有一个从excel工作表生成脚本文件的要求。我几乎能完成任务。但是问题是本地变量在脚本文件中的使用越多。由于本地变量越多,在toad中执行脚本文件时,在插入脚本期间抛出错误PL/SQL 102堆栈溢出异常。 下面是语法

"declare Q2 integer;
begin
select table1_seq.nextval into Q2 from dual;
insert into table1 values(Q2,sysdate,'BATCH',sysdate,'BATCH',sysdate,'BATCH',2,'N',null,null);
insert into table2 values(Q2,table2_seq.nextval,sysdate,'BATCH',sysdate,'BATCH',sysdate,'BATCH',2,'BLAH','Y',null,null);
"
注意,在上面的代码中,我在声明'Q2'之后没有“end;”语句 原因是我希望这个变量'Q2'的作用域在年底前可用

在Q2下,我可能会有另一个声明A1 A2

有些东西看起来像这样

Declare Q1 int;
Begin
 Insert()
       Declare A1 int;
         Begin
            Insert()
               Declare S1 int;
                  Begin
                     insert()......
           ........................
           .......................
           End;
           End;
           End;
在上面我可能有100-300个VAIRBALE,因为它看起来像嵌套的,因为嵌套堆栈错误正在弹出。如果是这种情况,是否有可能增加嵌套深度级别,以便解析所有脚本变量。 或者是否存在堆栈溢出的任何原因

即使我没有嵌套的IF或For循环,但在我的脚本文件中运行时,我得到了“堆栈溢出错误”。上述情况是否也属于嵌套情况。请尽快帮我

-Mahender

并非每个变量都使用“Declare”,它表示“declaration block”的开始

将所有变量声明放在DECLARE和BEGIN之间,将所有代码放在BEGIN和END之间


这并不是说您不能嵌套匿名块,只是您似乎误解了DECLARE keword的含义。

我不能使用常量变量声明。它将在运行时生成。我需要对嵌套块使用相同的方法,仅在运行时,.NET应用程序将生成脚本文件。基于某些BR,我将生成insert语句和变量声明,但显然不能无限期嵌套,您应该构建一个声明数组和一个insert语句数组,然后将它们输出到单个DECLARE/BEGIN/END块中。关于这个主题,您提出了两个问题,显然没有得到满意的答案。我建议您发布一个Excel电子表格示例,显示列、行和单元格,以及这些元素与表及其数据的关系。几乎可以肯定有更好的方法来处理您的问题,但我们需要更多的细节来找到它。
DECLARE
    Q1 INTEGER;
    A1 INTEGER;
    S1 INTEGER;
    ...
BEGIN
    INSERT INTO foo.table_name (...) VALUES (...);
    ...
END;
/