[PL/SQL] Oracle Stored Procedure的問題

看板Database (資料庫)作者 (宅男)時間16年前 (2009/11/10 18:40), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/2 (看更多)
各位好 小弟有三支寫好的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

11/10 23:44, , 1F
為什麼要 DROP 掉呢? Truncate Table 不行嗎?
11/10 23:44, 1F

11/11 08:06, , 2F
因為程式之後是要給別人執行的....= =||
11/11 08:06, 2F

11/11 12:04, , 3F
其實你可以用 global TEMPORARY table
11/11 12:04, 3F
文章代碼(AID): #1A-KC3wP (Database)
文章代碼(AID): #1A-KC3wP (Database)