Oracle

Toad for Oracle:過程、包、作業和 DBMS_SCHEDULER

  • October 21, 2019

如果我有大約 10 個包含子查詢的查詢,將所有這些查詢包含在一個過程中是否是一種最佳做法?此腳本創建報告所需數據的一小部分。

DROP TABLE TEST1;
CREATE TABLE TEST1 AS (
SELECT 
C.DATE,
C.ITEM,   
(SELECT name FROM name_codes WHERE code = C.DEPARTMENT) AS DEPARTMENT,
C.BUSINESS
FROM LOGS C));

這只是其中的一小部分,但程式碼或多或少會創建表、過濾欄位並組合輸出,直到獲得所需的結果。我也希望為其他腳本自動輸入數據​​。每個腳本都會計算一個 KPI,並且是它自己的過程。然後所有這些程序將被包裝到一個包中。

該軟體包將通過DBMS_SCHEDULER. 這聽起來像是正確的做法嗎?如果是這樣,我可以呼叫現有腳本來創建過程還是需要將 PLSQL 粘貼到過程腳本中?目前,我只想將第一個腳本作為一個程序來測試,該程序通過DBMS_SCHEDULER.

如果是這樣,我可以呼叫現有腳本來創建過程還是需要將 PLSQL 粘貼到過程腳本中?

兩者都有效。

DBMS_SCHEDULER.CREATE_JOB

作業的類型 ( job_type) 可以是PLSQL_BLOCKSTORED_PROCEDURE也可以。

對於PLSQL_BLOCK,您可以指定一個匿名塊,一段 PL/SQL 程式碼,例如begin ... end;.

對於STORED_PROCEDURE,您可以指定要呼叫的儲存過程的名稱。

引用自:https://dba.stackexchange.com/questions/251628