PL/SQL 训练08--触发器】的更多相关文章

8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8.2.6 重新编译触发器 8.3 删除和使能触发器 8.4 触发器和数据字典 8.5   数据库触发器的应用举例 触发器是许多关系数据库系统都提供的一项技术.在ORACLE系统里,触…
--什么是触发器呢?--一触即发,某个事件发生时,执行的程序块?--数据库触发器是一个当数据库发生某种事件时作为对这个事件的响应而执行的一个被命名的程序单元 --适合场景--对表的修改做验证--数据库的自动维护--通过不同粒度落实数据库活动的管理规则 --ORACLE中有五种不同类型的事件可以挂载触发器代码 --数据操作语句DML:数据表的增删改--数据定义语句DDL:比如创建表,索引--数据库事件:数据库启动或者关闭时触发--INSTEAD OF:替代触发器,实际上是DML触发器的替代品,是在…
--pl/sql通过SQL和ORACLE数据库紧密的整合在一起--在pl/sql中可以执行任何操作语句(DML语句),包括INSERT,UPDATE,DELETE,MERGE,也包括查询语句--可否执行DDL语句呢?--不可以直接执行,但可以通过动态SQL的方式执行,关于动态SQL,后面课程会专门拿一节课来讲 --事务的ACID原则:原子性,一致性,隔离性,持久性 --原子性:事务所涉及的改变是原子的:这些改变或者全部发生或者全部不发生 --一致性:一个事务必须是一个正确的状态转换.事务中发生的…
n  触发器简单介绍 触发器是指隐含执行的存储过程,它不是由程序员或者是DBA来显式调用,而是因为某个操作引发执行的.当定义触发器时,必须要指定触法的事件和触发的操作,常用的触发事件包括insert,update,delete语句,而触发操作实际就是一个pl/sql块.可以使用create trigger来建立触发器.…
--数据缓存技术 --PGA和SGA---SGA:系统全局区域--PGA:Process Global Area是为每个连接到Oracle的用户进程保留的内存. ---PLSQL从PGA获取信息的速度要比从SGA快--基于PGA的缓存为改善性能提供了许多有趣的机会 --基于包的缓存--基于包的缓存使用的是包级别的一个或多个变量,而不是在包中子程序的任何子程序里声明的变量--包级别的数据会一直存在于会话的整个生命期--如果在包级别声明了一个变量,一旦给这个变量赋了值,就会一直保持这个值,直到断开连…
--什么是动态SQL?动态PL/SQL--动态SQL是指在运行时刻才构建执行的SQL语句--动态PL/SQL是指整个PL/SQL代码块都是动态构建,然后再编译执行 --动态SQL来可以用来干什么? --执行DDL语句 --支持WEB引用的即席查询和即席更新需求 --软编码的业务规则和公式 --先来看dbms_sql包的使用 DECLARE v_cur number; v_sql ); v_result number; BEGIN v_cur := dbms_sql.open_cursor; v_…
--所谓包,就是把一组PL/SQL的代码元素组织在一个命名空间下.--一种可以把程序或者其他的PL/SQL元素比如游标.类型.变量的组织结构在一起的结构(包括逻辑结构和物理结构)--包提供了非常重要的.独一无二的功能,包括隐藏逻辑或者隐藏数据的功能,以及定义和操作“全局”或者--会话持久数据的能力 --可以更容易地增强以及管理应用程序--整体改善应用程序性能 --改善应用或者内置的薄弱环节 --代码重新编译的需求最小化 --包的演示 --包由两个代码块组成的:规范部分(必须的)和包体部分(可选的…
多数程序只需要通过SQL和底层数据库进行交互--有些情况,不可避免的还是会有一些场景,需要从PL/SQL给外部环境发送信息--或是从一些外部的源读入信息 --这节课介绍下面这些内置包 dbms_output;--用于在屏幕上显示信息utl_file ;-- 用于读取以及写入操作系统的文件 --显示信息 --oracle提供了dbms_output包,可以利用它来把信息从程序传到一个缓存中--然后这个缓存可以被其它的PLSQL程序或者被宿主环境读取和操作 --每个用户的会话都会有一个预定大小的DB…
--隐式游标--通过一个简单的SELECT ...INTO 语句提取一行数据,并放在一个局部变量中,最简单获取数据的途径 --显示游标--可以在声明单元明确的声明一个查询,这样可以在一个或多个程序中打开游标并且提取数据 --游标变量--使用游标变量,可以把指向一个查询结果集的指针从一个程序传递到另一个程序,灵活度较高--任何程序只要能访问这个变量,就可以打开这个游标,提取数据,关闭游标 --游标表达式--CURSOR表达式可以把一个SELECT 语句转换成REF CURSOR结果集,可以用于--…
--程序员在开发的时候,经常天真的认为这个世界是完美的,用户如同自己般聪明,总能按照自己设想的方式--操作系统输入数据.但残酷的事实告诉我们,这是不可能的事情,用户总会跟我们相反的方式操作系统--于是,无数的问题砸向我们.--那么怎么办呢?---PL/SQL提供了强大.灵活的错误捕获和处理方法,这节课我们来领略她的风采--什么是异常?先看一个例子 DECLARE V_DIV ; V_NUM ; BEGIN DBMS_OUTPUT.put_line(V_DIV/V_NUM); END ; / --…
1. 请列举关联数组.嵌套表.VARRAY三种集合类型的区别区别:1 关联数组只能在plsql中使用,嵌套表,varray可用于sql中,数据库表中的列2 嵌套表,varray必须在使用的时候初始化,关联数组在声明时自动完成3 关联数组是稀疏的,varray是紧凑的,嵌套表开始是紧凑的,删除了其中的元素就不是了4 嵌套表可以比较是否相等,关联数组.varray不行5 关联数组无界,varray是有界的,嵌套表可以扩展6 如果想在一个集合列中保存大量持久数据,唯一的选择就是嵌套表,数据库会在幕后用…
--开始介绍变量之前,我们先看下怎么在PLSQL写程序,如下我们写了一个块 declare --声明部分,声明变量 v_name ) :='hello world'; begin --执行区域 dbms_output.put_line(v_name);--如果使用SQL*PLUS,需要先执行set SERVEROUTPUT ON SIZE XXXXXX 才能显示打印信息 exception when others then null ; --异常处理区域 end ; --结束符 / --以上是一…
(一)触发器简单介绍 触发器是由数据库的特定时间来触发的, 特定事件主要包括以下几种类型: (1)DML: insert, update,delete 增删改 (2)DDL: create, alter, drop; (3) 数据库事件: logon,logoff,startup,shutdown,errors 触发器可以分为五种类型 (1)DML触发器: insert , update, delete (2)DDL 触发器: create,alter,drop (3)复合触发器 为Oracle…
---对象基本声明.实现.使用--对象类型,类似与JAVA中的类,通俗的讲,就是捆绑了相关函数和过程的记录类型. ---对象声明 --create type 创建一个对象类型的规范部分 create or replace type hello_object as object ( obj_name ), constructor function hello_object return self as result, constructor function hello_object(obj_na…
--创建函数 create or replace function add_sal(sSal number) return number is begin if (sSal > 5000) then return sSal + 51; elsif (sSal > 3000) then return sSal + 111; else return sSal + 222; end if; end; select sal, add_sal(sal) from emp; --触发器 create ta…
drop table ma_schedue_task ; ---test_task(:1,:2) create table ma_schedue_task( created_by ) default 'system' not null, created_date date default sysdate not null, updated_by ) default 'system' not null, updated_date date default sysdate not null, id_…
现在需要做一个任务调度,请大家设计,满足以下需求(1)任务可配置,比如可以配置PKG方法TEST_PROCEDURE(:1,:2...),可以是任意多个入参的方法,也可以没有入参(2)每个方法的实际参数可配置,每次运行方法传进方法的相应参数值可能不一样(但参数个数是一样的)(3)配置的任务可以隔一段时间执行一次,比如每隔N个小时,或者N天,或者N个月,或者N年(4)(选做)考虑每个任务可以配置线程数,每次可以根据线程数启用相应的多任务进行调度(可使用JAVA) ---- --(1)任务可配置,比…
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8…
触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的表进行的insert .update.delete操作或对视图进行类似的操作. 触发器是很多关系数据库系统都提供的一项技术.在Oracle系统里,触发器类似过程和函数,都有声明,运行和异常 处理过程的PL/SQL块. 触发器的组成: 触发事件:在何种情况下触发:比如:INSERT , UPDATE…
触发器:存放在数据库中,并被隐含执行的存储过程. 由触发事件,触发条件,触发操作组成. DML触发器:指定触发器时机(before or after),触发事件(insert  , delete, update),表名,触发类型,触发条件,触发操作 语句触发器: create [or replace] trigger trigger_name timing event1 [or event2 ..] on table_name PL/SQL block; trigger_name 触发器名 ev…
为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大. 学习必要性 1.提高应用程序的运行性能: 2.模块化的设计思想[分页…
一.游标 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现.游标是一个指向上下文的句柄( handle)或指针.通过游标,PL/SQL 可以控制上下文区和处理语句时上 下文区会发生些什么事情. 1.显式游标: 显式游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下. 显式游标处理需四个 PL/SQL 步骤: (1)定义游标:就是定义一个游标名,以及与其相对应的 SELECT 语句. 格式: CURSOR cursor_name[(parameter[, para…
PL/SQL数据库开发那点事-->编程,存储程序 在SQL*plus 中编写PL/SQL程序,并在SQL*plus 中执行它, PL/SQL块的代码就存放在SQL*plus的缓冲区中.如果在SQL*plus 中执行了其他的SQL语句或PL/SQL块,缓冲区中就会存放新的代码,原来的PL/SQL块就会被从缓冲区中清除出去.这种没有名称只是临时存放在缓冲区中的PL/SQL块叫做匿名块.匿名块就是没有名字的PL/SQL块,它仅存放在缓冲区中,只能在当前SQL*plus环境中执行.如果希望PL/SQL块…
PL/SQL -->隐式游标(SQL%FOUND) 分类: SQL/PLSQL 基础2010-12-22 16:23 4084人阅读 评论(0) 收藏 举报 sqlexceptionoraclenullinsertdelete --=============================== -- PL/SQL -->隐式游标(SQL%FOUND) --=============================== 在PL/SQL中,游标的使用分为两种,一种是显示游标,一种是隐式游标,显示游…
创建触发器 触发器类似于过程和函数,都拥有声明.执行和异常处理过程的带名PL/SQL块.与包类似,触发器必须存储在数据库中.前面已经讲过,过程是显式地通过过程调用执行的,同时过程调用可以传递参数.与之相反,触发器是在事件发生时隐式地运行的,并且触发器不能接受参数.运行触发器的方式叫做激发(firing)触发器.触发事件可以是对数据库表的DML(INSERT.UPDATE.DELETE)操作或某种视图的操作.Oracle8i把触发器功能扩展到了可以激发系统事件,如数据库的启动和关闭,以及某种DDL…
本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8.2.6 重新编译触发器 8.3 删除和使能触发器 8.4 触发器和数据字典 8.5   数据库触发器的应用举例 触发器是许多关系数据库系统都提供的一项技术.在O…
概述 ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数.过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数据库中,并通过输入.输出参数或输入/输出参数与其调用者交换信息. 过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据. 一.存储函数 1.创建函数 内嵌函数 CREATE [OR REPLACE] FUNCTION function_name [ (argment [ { IN | I…
ORACLE PL/SQL 触发器 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8.2.6 重新编译触发器 8.3 删除和使能触发器 8.4 触发器和数据字典 8.5   数据库触发器的应用举例 触发器是许多…
一.PL/SQL简介 1.概念:PL/SQL语言是Oracle数据库专用的一种高级程序设计语言,是对标准SQL语言进行了过程化扩展的语言. 2.功能:既能够实现对数据库的操作,也能够通过过程化语言中的复杂逻辑结构完成复杂的业务逻辑. 3.特点 (1)与SQL语言紧密集成,所有的SQL语句在PL/SQL中都能够得到支持. (2)减小网络流量,提高应用程序的运行性能. (3)模块化的程序设计功能,提高了系统可靠性. (4)服务器端程序设计可移植性好. 4.PL/SQL块的标准结构 DECLARE 声…
一.简介 触发器在数据库里以独立的对象进行存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来触发运行.oracle事件指的是对数据库的表或视图进行的insert.update及delete操作或对视图进行类似的操作.oracle将触发器的功能扩展到了触发ORACLE,如用户的登录.数据库的启动与关闭等.所以触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计相关的功能. 触发器的组成如下: 触发事件:…