我有一个程序,它计算SMS_OUTBOX表中的行数,并在行cont超过1000时发送电子邮件。我的程序如下:
CREATE OR REPLACE PROCEDURE SEND_EMAIL_ABOUT_PENDING_SMS IS
CHECK_SMS_COUNT NUMBER := 1000;
CURRENT_SMS_COUNT NUMBER;
BEGIN
SELECT COUNT(1) INTO CURRENT_SMS_COUNT FROM SMS_SCHEMA.SMS_OUTBOX;
IF CURRENT_SMS_COUNT >= CHECK_SMS_COUNT THEN
UTL_MAIL.SEND(
sender=>'<SENDER_EMAIL>',
recipients=>'<RECIPIENT_EMAIL>',
subject=>'Pending SMS',
Message=>'Pending SMS count exceeded.'
);
END IF;
END SEND_EMAIL_ABOUT_PENDING_SMS;
/
当我编译上面的时候我得到了这个错误。
然后我尝试这行代码执行没有过程:
EXEC UTL_MAIL.SEND(
sender=>'<SENDER_EMAIL>',
recipients=>'<RECIPIENT_EMAIL>',
subject=>'Pending SMS',
Message=>'Pending SMS count exceeded.'
);
然后我收到了这个错误:
PLS-00302:必须声明组件'SEND'
我是Oracle(和PL / SQL)的新手。任何人都可以帮我在Oracle中发送电子邮件,需要哪些配置?
请检查UTL_MAIL是否已正确安装。
请点击链接UTL_MAIL获取所需的信息和配置
Setup
The package is loaded by running the following scripts.
CONN sys/password AS SYSDBA
@$ORACLE_HOME/rdbms/admin/utlmail.sql
@$ORACLE_HOME/rdbms/admin/prvtmail.plb
In addition the SMTP_OUT_SERVER parameter must be set to identify the SMTP server.
CONN sys/password AS SYSDBA
ALTER SYSTEM SET smtp_out_server='smtp.domain.com' SCOPE=SPFILE;
-- Instance restart only necessary in 10gR1.
SHUTDOWN IMMEDIATE
STARTUP
或者,您可以使用utl_http.request
方法作为
v_url := 'http://<yourWebSite>/notification.asp?sender=<SENDER_EMAIL>
&recipients=<RECIPIENT_EMAIL>
&subject=Pending SMS
&message=Pending SMS count exceeded.';
v_rep := utl_http.request(utl_url.escape(v_url, false, 'UTF-8'));
哪里
v_url varchar2(4000);
v_rep varchar2(4000);
需要在begin
关键字之前声明。