--这段sql语句是用来实现oracle后台记录操作日志的,代替或者补充应用系统的操作日志。

--1.对应的日志记录表
-------------------------------------------------------------------
create table TEST
(
  T_ID   NUMBER(4),
  T_NAME VARCHAR2(20),
  T_AGE  NUMBER(2),
  T_SEX  CHAR(1)
);
----------------------对应的日志记录表---------------------------END

--2.建立触发器(触发器实现日志记录)

--2.1开启屏幕输出:(需要在命令行登陆sqlplus后执行)
sql>set serveroutput on;--在doc窗口和tomcat下可以捕捉到这些输出信息。
------------------------------------------------------------------

CREATE OR REPLACE TRIGGER test_trigger 
AFTER DELETE OR INSERT OR UPDATE ON test for each row -- for each row是为了使用:new和old
DECLARE
v_type VARCHAR2(15);
BEGIN
IF INSERTING THEN 
  v_type := 'INSERT'||:new.T_NAME;--oracle添加链接字符串使用||
  DBMS_OUTPUT.PUT_LINE('记录'||:new.T_NAME||'已经成功插入,并已记录到日志');--添加 只有new
ELSIF UPDATING THEN 
  v_type := 'UPDATE'||:old.T_NAME;
  DBMS_OUTPUT.PUT_LINE('记录'||:old.T_NAME||'已经成功更新,并已记录到日志');--更新有new和old
ELSIF DELETING THEN
  v_type := 'DELETE'||:old.T_NAME;
  DBMS_OUTPUT.PUT_LINE('记录'||:old.T_NAME||'已经成功删除,并已记录到日志');--删除只有old
END IF;
  my_pro(v_type);
END;
----------------------建立触发器------------------------------------END

--3.建立日志表。
----------------------------------------------------------------
create table TEST_LOG_1
(
  L_USER VARCHAR2(15),
  L_TYPE VARCHAR2(15),
  L_DATE VARCHAR2(30)
);
--------------------建立日志表---------------------------------END

--4.建存储过程(注意一定要加上PRAGMA AUTONOMOUS_TRANSACTION;让这个存储过程有自治的事务控制,不然会影响A的事务控制)
----------------------------------------------------------------
create or replace procedure my_pro(v_type varchar2)
as
PRAGMA AUTONOMOUS_TRANSACTION;--设置为自治事务且必须加上commit,否则报commit非法。
begin
       INSERT INTO TEST_LOG_1 VALUES(user,v_type,TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss'));
       commit;
end;
-------------------建存储过程-------------------------------------END

--最后我们在A中输入以下测试语句:
INSERT INTO test VALUES(1,'zhao',22,'M');
UPDATE test SET t_name = '30' WHERE t_id = 1;
DELETE test WHERE t_id = 1;

SELECT * FROM test;
SELECT * FROM TEST_LOG_1;

oracle使用存储过程实现日志记录.sql的更多相关文章

  1. Oracle随机选择一条记录SQL

    Oracle随机选择一条记录SQL:

  2. oracle的存储过程和函数(PL/SQL)

    czmmiao 存储过程概述 存储过程是子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库.是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出.一个存储过程通 ...

  3. MariaDB:开启日志记录SQL

    1.开启日志 红色是命令,之下是回显. MariaDB [jksfrz]> SET GLOBAL log_output = 'TABLE'; Query OK, 0 rows affected ...

  4. PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)

    (转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...

  5. Atitit mysql 存储过程捕获所有异常,以及日志记录异常信息

    Atitit mysql 存储过程捕获所有异常,以及日志记录异常信息 1.1. 异常的处理模式exit  continue undo模式 1 1.2. 捕获所有异常使用        DECLARE ...

  6. EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真

    EF Core使用SQL调用返回其他类型的查询   假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法 ...

  7. PL SQL 存储过程 SQL SERVER创建存储过程及调用,Oracle创建存储过程及调用

    Oracle使用存储过程实例: 例1: //查出表字段赋值给存储过程变量 create proc proc_stu @sname varchar(20), //默认是输入参数(input),另外还有两 ...

  8. 记录SQL Server2008日志文件损坏的恢复过程

    记录SQL Server2008日志文件损坏的恢复过程: 环境: 系 统:Windows Server2003 数据库:SQL Server2008 故障原因: 通过mstsc链接同一服务器时,用户界 ...

  9. 如何在MySql中记录SQL日志记录

    My SQL可以用下面方法跟踪sql 语句,以下方法以Windows平台为例,linux雷同:   1  配置my.ini文件(在安装目录,linux下文件名为my.cnf     查找到[mysql ...

随机推荐

  1. SPOJ QTREE Query on a tree --树链剖分

    题意:给一棵树,每次更新某条边或者查询u->v路径上的边权最大值. 解法:做过上一题,这题就没太大问题了,以终点的标号作为边的标号,因为dfs只能给点分配位置,而一棵树每条树边的终点只有一个. ...

  2. Linux安装telnet

    安装环境:CentOS 6.4    上篇已经讲述了memcached的安装,现在要测试Memcached功能的时候,需要使用到telnet服务.于是就有了本篇.   一.安装telnet 1.检测t ...

  3. 13SpringMvc_限定某个业务控制方法,只允许GET或POST请求方式访问

    这篇文章要实现的功能是:在一个Action中,有些业务方法只能是post提交上来的才能执行,有些方法是只能get提交上来的才能执行. 比如上篇文章中的UserAction.java(代码如下) pac ...

  4. 理解SQL Server中的权限体系(下)----安全对象和权限

    原文:http://www.cnblogs.com/CareySon/archive/2012/04/12/SQL-Security-SecurableAndPermission.html 在开始阅读 ...

  5. vim自动添加注释

    我想了下,要做好一件事, 1,首先喜欢它最才有动机去了解它 2,道听途说about那东西的,会去了解并去玩转 3,兴趣需要培养 一 添加vim头部信息. 系统:C67 追加以下代码到 /etc/vim ...

  6. 怎么写针对IE9的CSS

    (自己亲自试过有用)针对IE9的CSS只需在相应CSS代码加入只有IE9识别的 \9\0.具体代码如下: .div{ background-color:#0f0\9\0;/* ie9 */ } 其他浏 ...

  7. [转]World Wind Java开发之四——搭建本地WMS服务器

    在提供地理信息系统客户端时,NASA还为用户提供了开源的WMS Server 服务器应用:World Wind WMS Server.利用这个应用,我们可以架设自己的WMS服务并使用自己的数据(也支持 ...

  8. Chrome浏览器扩展开发系列之十四

    Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59      阅读:1361      评论:0      收藏:0    ...

  9. Linux常用指令---定时任务

    linux定时任务crontab命令选项基本只有对用户操作选项:-u 指定用户-l 列出某用户任务计划-r 删除某用户任务-e 编辑某用户任务 查看某一用户的定时任务crontab -u root - ...

  10. 点击事件touches与ios的手势UIGestureRecognizer

    .h文件 @property (weak,nonatomic) IBOutlet UILabel *messageLabel;@property (weak,nonatomic) IBOutlet U ...