下面是一个示例代码,演示如何重写APEX_MAIL包:
CREATE OR REPLACE PACKAGE my_APEX_MAIL IS
-- 定义与APEX_MAIL包一样的过程和函数名
PROCEDURE send( p_to IN VARCHAR2, p_from IN VARCHAR2, p_subject IN VARCHAR2, p_body IN CLOB, p_cc IN VARCHAR2 DEFAULT NULL, p_bcc IN VARCHAR2 DEFAULT NULL, p_reply_to IN VARCHAR2 DEFAULT NULL );
FUNCTION append_attachment( p_mail_id IN NUMBER, p_name IN VARCHAR2, p_content IN BLOB ) RETURN NUMBER;
FUNCTION get_attachments( p_mail_id IN NUMBER ) RETURN sys_refcursor;
-- 添加自定义的过程和函数
PROCEDURE sendWelcomeMail( p_to IN VARCHAR2 );
END my_APEX_MAIL;
-- 将APEX_MAIL包的身份转移至新包中
ALTER PACKAGE APEX_MAIL RENAME TO APEX_MAIL_ORIG; ALTER PACKAGE my_APEX_MAIL RENAME TO APEX_MAIL;
-- 修改新包中定义的过程和函数以实现定制化的功能
CREATE OR REPLACE PACKAGE BODY my_APEX_MAIL AS
PROCEDURE send( p_to IN VARCHAR2, p_from IN VARCHAR2, p_subject IN VARCHAR2, p_body IN CLOB, p_cc IN VARCHAR2 DEFAULT NULL, p_bcc IN VARCHAR2 DEFAULT NULL, p_reply_to IN VARCHAR2 DEFAULT NULL ) AS BEGIN -- 实现发送邮件的