作者Catbert (宅男)
看板Database
标题[PL/SQL] Oracle Stored Procedure的问题
时间Tue Nov 10 18:39:57 2009
各位好
小弟有三支写好的stored porcedure
分别是
DROP_AND_CREATE_TABLE(); --删除并重建Table
INSERT_EXPENSE(Mon); --新增资料到Expense Table
INSERT_SALES(Mon); --新增资料到Sales Table
原先的构想是
再写一支stored procedure把这三个兜成一支....XDD
步骤就是先执行把原有的Table drop後,再Create,然後再新增资料
原始程式如下:
create or replace PROCEDURE UPDATE_DATA
IS
BEGIN
DROP_AND_CREATE_DATA_TABLE();
FOR Mon IN 1..12 LOOP
INSERT_EXPENSE(Mon);
INSERT_SALES(Mon);
END LOOP;
END UPDATE_DATA;
但是事情并不像憨人我想的那麽简单....囧rz
执行时的错误讯息如下:
ORA-04068: 套装程式 的现行状态已被舍弃
ORA-04065: 未执行, 更改或删除 stored procedure "ODS.INSERT_EXPENSE"
ORA-06508: PL/SQL: 找不到正在呼叫的程式单元: "ODS.INSERT_EXPENSE"
ORA-06512: 在 "ODS.UPDATE_DATA", line 6
ORA-06512: 在 line 2
但是程式改成只删除Table可以成功
create or replace PROCEDURE UPDATE_DATA
IS
BEGIN
DROP_AND_CREATE_DATA_TABLE();
END UPDATE_DATA;
或是只新增资料也可以成功
create or replace PROCEDURE UPDATE_DATA
IS
BEGIN
FOR Mon IN 1..12 LOOP
INSERT_EXPENSE(Mon);
INSERT_SALES(Mon);
END LOOP;
END UPDATE_DATA;
但是请问诸位要怎样改写才能一起执行呢.....>"<
谢谢<(_ _)>
--
亲爱的朋友
你今天过的如何呢??
有没有开开心心快快乐乐的阿
无论发生什麽事希望你每天都能笑的很开心喔
笑一个吧
^__________________________________________________^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.7.130
1F:推 daniel1205:为什麽要 DROP 掉呢? Truncate Table 不行吗? 11/10 23:44
2F:→ Catbert:因为程式之後是要给别人执行的....= =|| 11/11 08:06
3F:推 roywu607:其实你可以用 global TEMPORARY table 11/11 12:04