今天遇到一个这样的问题,程序中有一个用来存储程序报错信息的临时表,就是每次当程序运行出错的时候,就会将相应的报错信息插入到临时表中,然后调用临时表中的数据在界面上显示给用户,然后今天出现的问题是,报错的界面出现了,但是没有正确的显示出报错信息,而是一片空白。在这个问题情景下,我就有了一个想知道数据是否正确插入到了临时表,但是我们都知道临时表是session级的,一个session是无法查看到另一个session临时表的数据的,所以,问题也就来了。本文就这个问题,提供下面的这种处理思路,如果你对oracle中的临时表还不是特别了解,可以先参考下博客中《oracle临时表用法小结》这篇文章。
1、创建临时表
为了方便后面写代码,先把临时表的结构表示出来,可以看下面的这段创建临时表的代码。
2、创建一个和临时表结构一样的普通表
创建一个普通表,用来存储临时表中的记录。
-- 创建一个普通表CREATE TABLE cmx_tmp_bak AS SELECT * FROM cmx_errors_tmp WHERE 1 = 0;3、在临时表上创建一个触发器
在临时表上面创建一个触发器,以实现每当往临时表中插入一条记录的时候,同时也将这条记录插入到前面建的那个普通表中。
-- 创建before insert触发器CREATE OR REPLACE TRIGGER cmx_errors_bak_trigger BEFORE INSERT ON cmx_errors_tmp FOR EACH ROWBEGIN INSERT INTO cmx_tmp_bak (seq_num, error_source, error_message, creation_date, created_by, description) VALUES (:new.seq_num, :new.error_source, :new.error_message, :new.creation_date, :new.created_by, :new.description,);END;这里有个地方需要注意的是,oracle不允许在触发器中加commit和rollback。
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) | Powered by Discuz! X3.2 |