透過 USER_SOURCE 視圖即可確認某預存程序是否存在於目前使用者的 Schema 中:
SELECT DISTINCT name FROM user_source WHERE type = 'PROCEDURE' AND name = 'CONTINUEHISORDERPROCESS';
TYPE = 'PROCEDURE' 過濾程序物件;若為函數請改為 'FUNCTION'、套件為 'PACKAGE'。DISTINCT 避免同一程序有多行原始碼而重複顯示。ALL_SOURCE 或 DBA_SOURCE 並加上 OWNER 條件。若頻繁使用,可寫成函數直接回傳布林值:
CREATE OR REPLACE FUNCTION proc_exists(p_name VARCHAR2) RETURN BOOLEAN IS v_cnt NUMBER; BEGIN SELECT COUNT(*) INTO v_cnt FROM user_source WHERE type = 'PROCEDURE' AND name = UPPER(p_name); RETURN v_cnt > 0; END;