DB2 9.7: 在 DB2 9.7 中使用 PL/SQL 匿名块
2009-10-16 00:00:00 来源:WEB开发网使用匿名块原型化 PL/SQL 代码
在清单 3 中,应用程序开发人员希望实现一个机制来让业务需求与在 CUSTOMER 表中定义的客户进行通信(通过电子邮件)。为了满足需求,他决定编写一个简单的原型 PL/SQL 匿名块,以向 CUSTOMER 表中的客户发送包含消息的电子邮件。当业务需求最终实现之后,可以改进原型化匿名块并轻松将其转换成新的 PL/SQL 存储过程。注意,这个匿名块使用新的内置包,包括 UTL_SMTP(用于发送电子邮件的包)和 DBMS_OUTPUT(向标准输出写入消息的包),这两个包都是 DB2 9.7 的一部分。
清单 3. 一个简单的原型 PL/SQL 匿名块,它向 CUSTOMER 表中的客户发送包含消息的电子邮件
SET SERVEROUTPUT ON
/
DECLARE
conn UTL_SMTP.connection;
reply UTL_SMTP.reply;
msg VARCHAR2(1024);
sender VARCHAR2(255) DEFAULT 'demo\@ca.ibm.com';
recipients VARCHAR2(255);
subject VARCHAR2(255) DEFAULT 'Quick notification';
crlf VARCHAR2(2);
BEGIN
crlf := UTL_TCP.CRLF;
FOR row IN (SELECT first_name, email FROM customer) LOOP
DBMS_OUTPUT.PUT_LINE('Sending test email to customer ' || row.first_name || '...');
recipients := row.email;
msg := 'FROM: ' || sender || crlf ||
'TO: ' || recipients || crlf ||
'SUBJECT: ' || subject || crlf ||
crlf ||
'Hi ' || row.first_name || ', this is a test notification.';
UTL_SMTP.OPEN_CONNECTION('smtp_server.ibm.com', 25, conn, 10, reply );
UTL_SMTP.HELO(conn, 'localhost');
UTL_SMTP.MAIL(conn, sender);
UTL_SMTP.RCPT(conn, recipients);
UTL_SMTP.DATA(conn, msg);
UTL_SMTP.QUIT(conn);
END LOOP;
END;
/
Output:
Sending test email to customer Mike...
Sending test email to customer Joan...
Sending test email to customer Colin...
Sending test email to customer Graham...
Sending test email to customer Patsy...
更多精彩
赞助商链接