存储过程(stored procedure) :可以看作带名字的pl/sql程序块;通过名字调用执行;可以带参数或不带参数。

触发器(trigger):通过事件触发执行,可看成特殊类型的存储过程。

下图建立了一个acc存储过程,显示account账户的id 及其对应的money值:

存储过程执行:1.exec p;        2. begin

  p;

                end;

                /

下面存储过程,给收入在[1000,2000)区间的用户增加1块收入,给给收入在[2000,3000)区间的用户增加2块收入.

执行后显示:

触发器:

两个示例:1.创建操作日志               2.修改数据库的外键关联

1.创建操作日志:

创建触发器:before /after   insert or deleteor update on account(可同时多个触发事件用or隔开即可)

执行操作,看是否自动计入acclog表

2.使用触发器修改被参考项的外键关联(有副作用,尽量少用)

作用:可以让已被参考的外键项实现子项和父项的关联更改;

侧效:子项和父项信息都可能会关联其它信息,这时是否、能否需要进行关联改变或其它操作要考虑,小心蝴蝶效应。

dept.id 是 emp表中的主外键;

emp表

dept表:

这时:

emp中的depno值可以改变(只要在dept.id中有对应值,有父项关键字)

而dept中的已被参考项不可更改:

可以使用触发器  :NEW            :OLD          实现关联修改:

EMP中实现了关联更改

仅提供一种功能描述,注意具体使用场景。小心使用!注意侧效!

注意commit提交,不然不同终端的显示结果不同:

右图中cmd环境,不提交退出,其实这条update语句会回滚,不会有任何作用。

重新登入查询,dept没有数据更新。

oracle:存储过程和触发器的更多相关文章

  1. oracle 存储过程 ,触发器练习

    /*以下代码是对emp表进行显示宽度设置 */col empno for 9999;col ename for a10;col job for a10;col mgr for 9999;col hir ...

  2. oracle存储过程和存储函数&触发器

    oracle存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程,存储函数 存储过程和存储函数的相同点:完成特定功能的程序 存储过程和存储函数的区别:是否用return语句返回值 ...

  3. [转]使用ADO.NET访问Oracle存储过程

    本文转自:http://www.cnblogs.com/datasky/archive/2007/11/07/952141.html 本文讨论了如何使用 ADO.NET 访问 Oracle 存储过程( ...

  4. Oracle存储过程创建及调用(转)

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  5. oracle存储过程加密

    引言:平时大家在做项目的时候,经常会遇到把Oracle存储过程带到项目现场来测试系统.这时如果想对自己的存储过程进行保密,不使别人看到源代码,就可以对已有的存储过程进行加密保护.顾名思义,就是对Ora ...

  6. PL/SQL之存储过程和触发器实例

    1.Oracle存储过程实例 /*不带任何参数存储过程(输出系统日期)*/ CREATE OR REPLACE PROCEDURE output_date IS BEGIN DBMS_OUTPUT.P ...

  7. Oracle存储过程创建及调用

    在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...

  8. Oracle中创建触发器示例及注意事项

    1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYI ...

  9. Oracle系列:触发器、作业、序列、连接

    .Net程序员学用Oracle系列(8):触发器.作业.序列.连接   1.触发器 2.作业 2.1.作业调度功能和应用 2.2.通过 DBMS_JOB 来调度作业 3.序列 3.1.创建序列 3.2 ...

随机推荐

  1. Mahout学习资料

    Apache Mahout 简介 http://www.ibm.com/developerworks/cn/java/j-mahout/ 从源代码剖析Mahout推荐引擎 http://blog.fe ...

  2. sql-修改每条数据的某一个字段的值

    update B set B.maildata =(select SUBSTRING(maildata,0,3) from basedata where basedata.cid = B.cid)+( ...

  3. WPF 分享一种设置程序保存配置文件的方法

    最近需要做一个配置程序,主要给其他程序做相关配置的小工具. 配置项蛮多的,一般我们都是将各个配置项写到配置文件的节点中,比如App.config文件或者自定义的xml文件. 因为我用的是wpf,MVV ...

  4. 8-网络请求之http

    本篇博客对应视频讲解 回顾 上一篇讲了Linq的使用,大家自己上手实践之后,相信一定会感到非常快捷方便.更多详细的内容还是需要自己去阅读官方文档. 今天要讲网络请求中的http请求,这也是在编程当中经 ...

  5. C#读入整数

    // ClassLibrary1.h #include<iostream> #pragma once using namespace System; namespace ClassLibr ...

  6. 教你玩转XSS漏洞

    什么是存储性XSS那? 通俗理解就是”xss“语句存在服务器上,可以一直被客户端浏览使用,所有登陆某一个存在”存储性xss“的页面的人,都会中招,可以是管理员,可以是普通的用户,所以他的危害是持续性的 ...

  7. 「工具」三分钟了解一款在线流程绘制工具:Whimsical

    Whimsical 是一款在线流程绘制工具,只需要一个浏览器就随时随地绘制精美的流程图.除了流程图(Flowcharts)功能,官方还推出了线框图(Wireframes).便利贴(Sticky Not ...

  8. 几种封装javaBean的方法

    开发框架时,经常需要使用java对象(javaBean)的属性来封装程序的数据,封装javaBean的方法有很多,比如反射,内省,以及使用工具类.下面从反射开始介绍. 1.javaBean介绍: 简介 ...

  9. 多并发编程基础 之线程程 Thried

    原贴 https://www.cnblogs.com/gbq-dog/p/10365669.html 今日要整理的内容有 1. 操作系统中线程理论 2.python中的GIL锁 3.线程在python ...

  10. json 模块的基本使用学习

    内容大纲 1: 为什么要学习json模块 >1:因为网络之间的通信,还有不同语言之间的相互内容沟通,需要用到json 模式进行沟通 >2:写入部分文件用json文件保存, 2:json的序 ...