记录一致性错误日志可以简化PL-SQL调试
http://tech.ddvip.com 2007年07月03日 社区交流
内容摘要:从事Oracle数据库方面的工作已有一年有余了,我最喜欢的部分是PL/SQL。这是Oracle的数据可编程语言,使用它可以将过程化代码与SQL代码结合在一起。
CREATE OR REPLACE TRIGGER T_ERRORLOG_BI
BEFORE INSERT
ON ERRORLOG
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
begin
if :new.id is null then
select errorlog_id_seq.nextval
into :new.id
from dual;
end if;
end t_errorlog_bi;在实际应用中对数据表提供一个主键是十分有益的。我知道我们可以在创建表格时设定主键,但是我喜欢以后单独完成这项工作。我不知道为什么,只是感觉这样做更清楚一些。
ALTER TABLE ERRORLOG ADD (PRIMARY KEY (ID));PL/SQL是基于古老的Ada程序设计语言的,因此在创建一个包时,需要提供两部分:规格说明(接口)部分和主体部分接口的真正实现。对于我们简单的错误日志记录包,规格说明部分只提供一个单一过程:
CREATE OR REPLACE package pkg_error is
procedure log (p_error_code errorlog.code%type,
p_error_message errorlog.message%type,
p_package errorlog.package_name%type default null,
p_procedure errorlog.procedure_name%type,
p_location errorlog.location%type default null,
p_parameters errorlog.parameters%type default null);
end pkg_error;在主体部分,可以包含任意多个你想要的过程和函数。至少,它必须实现规格说明中的过程和函数。在本例中,包的主体部分只实现规格说明中的一个过程:
CREATE OR REPLACE package body pkg_error is
procedure log (p_error_code errorlog.code%type,
p_error_message errorlog.message%type,
p_package errorlog.package_name%type default null,
p_procedure errorlog.procedure_name%type,
p_location errorlog.location%type default null,
p_parameters errorlog.parameters%type default null) is
pragma autonomous_transaction;
begin
insert
into errorlog
(time,
code,
message,
package_name,
procedure_name,
location,
parameters)
values (sysdate,
p_error_code,
p_error_message,
p_package,
p_procedure,
p_location,
p_parameters);
commit;
end log;
end pkg_error;
责编:豆豆技术应用
正在加载评论...
- Oracle 10g 教程
- Oracle 故障处理
- Oracle 存储过程
- Oracle 备份恢复
- Oracle 性能调优
- Oracle 9i 教程
- Oracle 11g 教程
- Oracle 启动
- Oracle 命令
- Oracle 数据库管理
- Oracle 时间
- Oracle 密码
- Oracle 用户
- Oracle 常见错误
- Oracle 建数据表
- Oracle 索引
- Oracle 数据库连接
- Oracle 锁
- Oracle RAC 专题
- Oracle exp/imp 命令
- Oracle 表空间
- Oracle 查询
- Oracle 函数
- Oracle PL/SQL 专题
- 更多Oracle 专题>>>