九、系统包一览
Oracle和各种Oracle工具都提供了系统包来帮助我们建立基于PL/SQL的应用程序。例如,Oracle提供了许多工具包,下面介绍一下其中比较典型的包。
1、关于DBMS_ALERT包
DBMS_ALERT能让数据库触发器在特定的数据库值发生变化时向应用程序发送报警。报警是基于事务的并且是异步的(也就是它们的操作与定时机制无关)。例如,当新的股票和债券上市时公司就可以通过这个包更新来他的投资总额。
2、关于DBMS_OUTPUT包
包DBMS_OUTPUT能让我们显示来自PL/SQL块和子程序中的输出内容,这样就会很容易地进行测试和调试。过程put_line能把信息输出到SGA的一个缓存中。我们可以通过调用过程get_line或在SQL*Plus中设置SERVEROUTPUT
ON就能显示这些信息。假设我们创建了下面的存储过程:
CREATE
PROCEDURE
calc_payroll(payroll OUT
NUMBER
) AS
CURSOR
c1 IS
SELECT
sal, comm
FROM
emp; BEGIN
payroll := 0;
FOR
c1rec IN
c1 LOOP
c1rec.comm := NVL(c1rec.comm, 0);
payroll := payroll + c1rec.sal + c1rec.comm;
END
LOOP
;
/* Display debug info. */
DBMS_OUTPUT.put_line('Value of payroll: '
|| TO_CHAR(payroll)); END
;
|
使用下面的命令时,SQL*Plus就能显示出payroll的值:
SQL
> SET
SERVEROUTPUT ON
SQL
> VARIABLE num NUMBER
SQL
> CALL calc_payroll(:num);
Value of payroll: 31225
|
3、关于DBMS_PIPE包
包DBMS_PIPE允许不同的会话通过命名管道来进行通信(管道就是一块内存区域,进程使用这个区域把消息传递给另外一个进程)。我们可以使用过
程pack_message和send_message把消息封装到一个管道,然后把消息发送到同一个实例中的另一个会话中。
管道的另一个终端,我们可以使用过程recieve_message和unpack_message来接受并打开要读取的消息。命名管道在很多地方都很有用。例如,我们可以用C语言编写一个收集信息的程序,然后把信息通过管道传递给存储过程。
4、关于UTL_FILE包
包UTL_FILE能让我们的PL/SQL程序读写操作系统(OS)文本文件。它提供了标准的OS流文件I/O,包括open、put、get和close操作。
当我们想要读写文件的时候,我们可以调用函数fopen,它能返回一个在后续过程调用中使用到的文件句柄。例如,过程put_line能往打开的文件中写入文本字符串,并在后边添加一个换行符,过程get_line能从打开的文件读取一行内容到放到一个输出缓存中。
5、关于UTL_HTTP包
包UTL_HTTP可以让我们PL/SQL程序使用超文本传输协议(HTTP)进行通信。它可以从互联网接收数据或调用Oracle
Web服务器的cartridge。这个包有两个入口点,每一个都接受一个URL(统一资源定位器)字符串,然后连接到一个指定的网站并返回所请求的数据,这些数据通常是超文本标记语言HTML格式。
十、包编写准则
在编写包时,尽量让它们保持通用性,这样就能在以后的程序中多次使用。避免编写那些与Oracle已经提供的特性相同的包。
包说明反映了我们的应用程序设计。所以,一定在包体之前定义它们。只有那些对包用户必须可见的内容才可以放在说明部分。这样,其他的开发人员就不会滥用包中的内容了。
为了减少因代码改变而引起的重编译,尽量不要在包说明部分放置过多的内容。对包体内容的改变不需要编译其他独立的过程,但是,如果包说明发生改变,Oracle就得重新编译每一个引用到那个包的存储子程序了。
分享到:
相关推荐
PL/SQL用户指南与参考(中文Doc版) 是我以前从网上费了不少劲才收集整理的文档资料 对应Oralce在线英文文档的《PL/SQLUser's Guide and ReferenceRelease 2 (9.2)》 详细讲解了如何使用Oralce的PL/SQL语言编写健壮、...
4 PL/SQL Developer 7.0 用户指南 6.6 更新数据库 .......43 6.7 查看和编辑 XMLTYPE 列 .........44 6.8 直接查询导出 .....44 6.9 保存 SQL 脚本 .....44 6.10 创建标准查询 .....45 7. 命令窗口.......46 7.1 ...
4 PL/SQL Developer 7.0 用户指南 6.6 更新数据库....................................................43 6.7 查看和编辑 XMLTYPE 列..........................................44 6.8 直接查询导出................
PUSQL基础 3.1 PL/SQL块简介 3.1.1 PL/SQL块结构 3.1.2 PL/SQL块分类 3.2 定义并使用变量 3.2.1 标量变量 3.2.2 复合变量 3.2.3 参照变量 3.2.4 LOB变量 3.2.5 非PL...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
在过去的14年中,他与IanAbramson和MichaelCorey为OraclePress合著了一系列图书.Abbey在国际Oracle用户团体非常活跃,经常出席COLLABORATE、OraclecOpenWorld和区域性用户组会议. Michael J.Corey是Ntirety...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
4 PL/SQL Developer 9.0 用户指南 7.8 直接查询导出 ......................................................... 45 7.9 保存 SQL 脚本 ........................................................ 45 7.10 创建...
9.2 Internet 驱动Postgre SQL 252 9.3 获得Postgre SQL 253 9.4 PostgreSQL 快速安装说明 254 9.5 详细安装 255 9.6 资源分发包的安装 259 9.6.1 准备工作 259 9.6.2 循序渐进的过程 260 9.7 PostgreSQL样例 RPM ...
§11.2 SQL与PL/SQL 231 §11.2.1 什么是PL/SQL? 231 §11.2.1 PL/SQL的好处 232 §11.2.1.1 有利于客户/服务器环境应用的运行 232 §11.2.1.2 适合于客户环境 232 §11.2.1.3 客户及服务器端的好处 232 §11.2.2 PL...
8.3.1 存储的与匿名的PL/SQL程序块 282 8.3.2 PL/SQL对象 282 8.4 监视和解决锁定冲突 286 8.4.1 共享锁与排他锁 287 8.4.2 排队机制 287 8.4.3 锁定争用 288 8.4.4 死锁 290 8.5 撤销概述 291 8.6 事务与...
§11.2 SQL与PL/SQL 231 §11.2.1 什么是PL/SQL? 231 §11.2.1 PL/SQL的好处 232 §11.2.1.1 有利于客户/服务器环境应用的运行 232 §11.2.1.2 适合于客户环境 232 §11.2.1.3 客户及服务器端的好处 232 §11.2.2 PL...
10.2 识别和管理pl/sql对象 10.3 监视和解析锁定冲突 10.4 小结 10.5 本章测试题 第11章 管理撤销.. 11.1 解释撤销的作用 11.2 了解事务的撤销生成方式 11.3 管理撤销 11.4 小结 11.5 本章测试题...
4 PL/SQL Developer 7.0 用户指南 6.6 更新数据库............43 6.7 查看和编辑 XMLTYPE 列..44 6.8 直接查询导出..........44 6.9 保存 SQL 脚本..........44 6.10 创建标准查询..........45 7. 命令窗口............
8.3.1 存储的与匿名的PL/SQL程序块 282 8.3.2 PL/SQL对象 282 8.4 监视和解决锁定冲突 286 8.4.1 共享锁与排他锁 287 8.4.2 排队机制 287 8.4.3 锁定争用 288 8.4.4 死锁 290 8.5 撤销概述 291 8.6 事务与...
4 PL/SQL Developer 7.0 用户指南 6.6 更新数据库....................................................43 6.7 查看和编辑 XMLTYPE 列..........................................44 6.8 直接查询导出................