你能帮我解决这个问题吗?
我不能使用Execute immediate,也没有存储过程来为我做。此外,全局临时表也不是一种选择。
我需要在LOOP语句中删除一个表。
怎么做?
谢谢
V_VAR:=1;
While V_VAR<>0;
BEGIN LOOP
<my working inner loop code here which generates data from MYTABLE to MYRESULT>
DROP TABLE MYTABLE; -- ERROR HERE Excpected .....
CREATE MYTABLE ();
INSERT INTO MYTABLE SELECT ... FROM MYRESULT
Select nvl(Count(*),0) into V_VAR from MYTABLE;
END LOOP;
(我有一个双循环:内在和外在。 内部人员完成工作,但由于它的本质,它需要运行X次,直到处理完所有问题的迭代。 因此,在内部代码的最后,我需要从输出表重新启动原始表中的工作数据,以便我可以运行下一次迭代。
Source -> run the inner loop -> Calculated data -> transform to the source format -> overwrite the source with the new iteration -> run the inner loop
等
我的问题是,例如在MSSQL中我只是在外部循环中删除/截断表,并插入到下一个版本的新转换数据中。 但是,当我尝试在Oracle中执行此操作时,我得到的错误是它不会期望循环中的drop / truncate。 )
编辑2: 最初的问题是我需要堆叠交货时间。如果你堆叠它们,你需要再次堆叠它们,直到它们没有间隙。所以我必须通过行代码运行我的相同迭代,多次,直到。所以要做到这一点,我有一个工作(快速,测试)循环,我循环,直到我的间隙计数为0.因为我的代码工作在给定的表和结构,能够循环N次,我需要提供输出回原始表再次迭代。在输出上有一个计算步骤,我不能更新&#34;到我的orig表(很多分组)。