plsql programming 19 触发器】的更多相关文章

挂起语句, 是指数据库 Hang 到那不能动了, 触发的. 1. DML 触发器 这种类型的触发器对于开发人员都很常见, 其他类型的触发器主要是给DBA使用的. 配置触发器,我们需要回答以下问题: 触发器应该是对整个DML语句触发一次, 还是要为语句涉及的每一行都触发一次 ? 触发器是应该在整个语句开始之前或者结束之后, 或者是在对每一行记录处理之前或者之后触发 ? 触发器到底是由插入, 更新, 删除或者是某种组合触发的 ? (oracle 11g 开始支持多个操作组合触发器) 如果我在 boo…
记录类型非常类似数据库表中的行. 记录作为一个整体本身并没有值, 不过每个单独成员或字段都有值, 记录提供了一种把这些值当做一组进行操作的方法. 例如: 1: -- create a table 2: -- chap11_01.sql 3: create table books ( 4: book_id integer; 5: isbn varchar2(13), 6: title varchar2(200), 7: summary varchar2(2000), 8: author varch…
代码模块化, 即将一大块代码拆成若干小块(过程), 然后就可以在其他模块调用这些模块了, 这样, 重用性更好, 也方便管理. 过程: 过程是一个可以像执行 PL/SQL 语句一样调用的程序, 一个过程可以执行一个或多个动作. 我们可以通过参数列表向过程传递或者从过程传出信息. 函数: 函数是一个通过RETURN 语句返回数据的程序, 使用起来就像是一个 PL/SQL 表达式. 我们可以通过参数列表传入参数, 也可以通过参数列表传出参数, 不过通常情况下这么做并不好. 数据库触发器: 触发器是当数…
触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的表进行的insert .update.delete操作或对视图进行类似的操作. 触发器是很多关系数据库系统都提供的一项技术.在Oracle系统里,触发器类似过程和函数,都有声明,运行和异常 处理过程的PL/SQL块. 触发器的组成: 触发事件:在何种情况下触发:比如:INSERT , UPDATE…
这一章的内容, 只完成了一部分, 剩下的用到再补充吧 由于依赖关系, 而编译失败, 需要重新编译. ( 所谓依赖, 是指存储过程, 函数等在运行中调用的对象, 比如table 等, 比如你删除了过程中调用的table, 然后又创建了一个一模一样的, 这个过程就需要重新编译) alter package bookworm compile body reuse settings; alter procedure add_book compile reuse settings; 1. 数据字典帮助 U…
我们可以把多个SQL语句集中在一起, 在逻辑上组成一个事务, 从而保证这些操作或者全部被保存到数据库(用sql的说法就是”提交”), 或者被整体驳回(用sql的说法是“回滚”). 事务: ACID 原子性: 改变或者全部发生, 或者全部不发生. 一致性: 正确的状态转换, 不能违反任何完整性约束, 例如 银行汇款 隔离: 从任何一个事务的角度来看, 其他事务看起来都是在它之前或之后发生的. 持久性: 一旦一个事务成功结束, 状态的改变就是永久的了. DML 语句, insert, update,…
bolean 类型 raw 类型, 用来保存和操作少量的二进制数据. urowid 和 rowid 类型, 这两种数据类型表示数据库的 rowid. 所谓 rowid 就是一个标识符-用来表示数据库中一行记录的物理地址的二进制值. 一个rowid值可以唯一的标识出数据库表中的一行数据, 即便这个表没有唯一键. 两行记录就算是所有列的值都完全相同, 但是会有不同的 rowid 或者 urowid. 从历史上说, rowid 类型要比 urowid 出现的早, 伴随着 Oracle 增加的新功能,…
动态SQL 是指在执行时才构建 SQL 语句, 相对于静态 sql 的编译时就已经构建. 动态PLSQL 是指整个PL/SQL代码块都是动态构建, 然后再编译执行的. 作用: 1. 可以支持 DDL 语句, 静态 sql 只能支持 DML 语句. 2. 支持web 引用程序的查询意愿( 一个网络应用程序的常见需求是用户可以指定他们想看到的列, 以及改变数据的排序方式 ) 2. 可以将业务逻辑先放在表中, 然后再动态编译. NDS 是我们首选的动态解决方案. NDS 执行动态语句的办法就是 exe…
1. 条件语句 if salary > 40000 or salary is NULL then give_bonus(employee_id, 500); end if; if condition then --- else --- end if; if condition then statement1 elsif condition then statement2 else statement3 end if; 例如: IF salary >= 10000 AND salary <…
触发器是与表有关的数据库对象,触发器只能是针对创建的永久表,而不能是临时表. 1.1 创建触发器 -- 语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt trigger_time:是触发器的触发时间,可以是 before或after, before是检查约束前触发,而after是检查约束后触发. trigger_event:是触发器的触发事件,可以是 i…
授权 从 oracle 8i 开始, oracle 用通过提供 authid 子句为 pl/sql 的执行授权模型, 这样我们可以选择使用 authid current_user(调用者权限)来执行这个plsql语句, 这时这个程序是用调用者(当前)模式的授权运行的. 与 SQL 整合 pl/sql 于 sql 紧密整合, plsql 无需任何 odbc, jdbc declare l_book_count INTEGER; begin select count(*) into l_book_c…
number 类型, 十进制数据类型(平台无关的) pls_integer 和 binary_integer 这两种数据类型和你底层硬件表示整数的方法完全一致, 这两种类型的运算是利用硬件原生, 机器指令执行的, 你不能再数据库中保存这些类型的值. binary_float 和 binary_double 一般用于浮点数计算 number 类型, number(9,2)  // 注意, 这里的9是9位精度, 表示有效数字要包含2位小数, 所以这个数的最大值是 9 999 999.99 numbe…
年 月 日 时 分 秒 时区 用小时表示的相对于 UTC 的时差 用分钟表示的相对于 UTC 的时差 date 存储日期和时间, 不带时区, 精确到秒 timestamp 存储日期和时间, 不带时区, 时间精度可以达到10亿分之一秒, 小数点后9位. 除了精度这一点之外, TIMESTAMP 和 DATE 相同 timestamp with timezone 存储时区, 日期和时间, 精度达到小数点后 9 位 timestamp with local timezone 保存日期和精确到小数点后…
数据类型 char, Nchar varchar2, Nvarchar2 clob, Nclob number number(9, 2);  -- 定点小数, 小数点左边7位, 右边2位 number, 浮点小数 number(2) 整数 pls_integer: 由硬件实现算法的整数类型, 顾名思义, 效率高, 但是兼容性... for 循环计数器的类型是 PLS_INTEGER ROWID 和 UROWID 用来代表某个表中某条记录的地址, ROWID 代表了表中一行记录的唯一物理地址, U…
--4.数据库事件触发器 需要超管的权限 /* 数据库事件触发器有数据库级和模式级两种. 前者定义在整个数据库上,触发事件是数据库事件,如数据库的启动.关闭,对数据库的登录或退出. 后者定义在模式上,触发事件包括模式用户的登录或退出,或对数据库对象的创建和修改(DDL事件). */ -- 需要管理员身份 创建table 写在 sys中 --创建事件历史表 create table event_table( event_name varchar(50), event_date date ); --…
所谓包, 就是把一组PL/SQL 的代码元素组织在一个命名空间下. 另外, 包的用法就类似java中的类.( 有封装, 有重载, 没有继承和多肽) create or replace procedure process_employee( employee_id_in IN employees.employee_id%type) is l_full_name ); begin select last_name || ' , ' || first_name into l_full_name fro…
create or replace function function_demo RETURN emp PIPELINED as Type ref_cur_emp IS REF CURSOR RETURN emp%RowType; cur_emp ref_cur_emp; rec_emp cur_emp%RowType; begin Open cur_emp For select * from emp t; Loop fetch cur_emp InTo rec_emp; Exit When c…
关联数组, 嵌套表, varray 个人并不推荐使用集合, 因为操作有别于普通字段. 集合中每一个元素的数据类型都是相同的, 因此这些元素都是同质的(同质元素) 这一章的内容先忽略吧, 因为个人感觉用不到…
一般, char 和 nchar 类型很少使用. 建议使用 varchar2 和 nvarchar2, 其中( n 开头的是国家字符集, 没有n开头的是数据库字符集 ) 一般也不怎么使用国家字符集 variable_name VARCHAR2(max_length [char | byte]);  其中 char 说明以字符为单位, byte说明以字节为单位. 如果忽略了char或 byte( 我们一般都这样做, 定义时直接 varchar2(10) 类似这种), 这时, 要看初始化参数NLS_…
/* 同一表使用所有条件 Create or replace trigger t5 Before insert,delete,update on 表名 For each row //plsql块 */ /* 在触发器中,还有三个变量:都是boolean INSERTING 正在执行insert吗. DELETING UPDATING */ select TABLE_NAME from USER_TABLES; select * from trigger_t2; desc trigger_t2;…
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据. 语法: CURSOR  游标名  [ (参数名  数据类型,参数名 数据类型,...)]  IS  SELECT   语句; 例如:cursor c1 is select ename from emp; 游标…
Procedure Language 实际上是Oracle对SQL语言的能力扩展,让SQL语言拥有了if条件判断,for循环等处理. 一.PLSQL基本语法 DECLARE -- 声明部分 变量名 变量类型 := 初始值 变量名 emp.sal % TYPE -- 引用类型的变量 emp % rowtype -- 记录型变量 BEGIN -- 业务逻辑 END ; 1.变量的声明与使用 -- 已知数据类型的赋值声明 DECLARE i ; BEGIN -- 输出语句相当于 System.out.…
1.  子程序的各个部分: 声明部分.可执行部分.异常处理部分(可选) 2.子程序的分类: A.  过程 - 执行某些操作 a.  创建过程的语法: CREATE [OR REPLACE]  PROCEDURE  <procedure name> [(<parameter list>)]  IS|AS <local variable declaration> BEGIN <executable statements> [EXCEPTION <excep…
Oracle常用语句语法汇总 Oracle10g 1 第一章Oracle命令 a) 系统管理员连接 conn */* as sysdba b) 查询当前用户 show user c) 创建新用户 create user 用户名 identified by 密码(密码不能以数字开头).例如create user abc identified by cba d) 用户登录 conn 用户名/密码.例如conn abc/cba e) 用户授权 grant 权限 to 用户.例如grant connec…
1.什么是SQL语句 sql语言:结构化的查询语言.(Structured Query Language),是关系数据库管理系统的标准语言. 它是一种解释语言:写一句执行一句,不需要整体编译执行.语法特点:1.没有“ ”,字符串使用‘ ’包含2.没有逻辑相等,赋值和逻辑相等都是=3.类型不再是最严格的.任何数据都可以包含在‘ ’以内4.没有bool值的概念,但是在视图中可以输入true/false5.它也有关系运算符:> < >= <= = <> != ,它返回一个bo…
阅读目录 1.什么是SQL语句 2.使用sql语句创建数据库和表 3.创建数据表 4.数据完整性约束 5.四中基本字符类型说明 6.SQL基本语句 7.类型转换函数 8.日期函数 9.数学函数 10.字符串函数 11.联合结果集union 12.CASE函数用法 13.IF ELSE语法 14.WHILE循环语法 15.子查询 16.表连接Join 17.事务 18.视图 19.触发器 20.存储过程 21.分页存储过程 22.索引 23.临时表 1.什么是SQL语句 sql语言:结构化的查询语…
一 1. 面向对象的思想主要包括什么? 答: 继承,多态,封装,类,对象,接口,聚集,聚合,泛化 2. 什么是ASP.net中的用户控件 答: 用户控件就是使用.ascx作为扩展名的文件,其将多种服务器端控件组合在一起,作为一个单独的控件服务于页面.这种用户控件存在的问题如,将其拖到不同级别的目录下后里面的图片等的相对路径会变得不准确.需要自已写方法调整. 3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS.CLS和CLR分别作何解释? 答: 应用程…
1. select 使用正则表达式 正则表达式的模式串, 与linux基本相同, oracle提供以下4个函数来支持正则表达式: REGEXP_LIKE: 比较一个字符串是否与正则表达式匹配(看来是返回true, false) (srcstr, pattern) select * from test where regexp_like(column_name, '^[0-9]+$'); REGEXP_REPLACE: 搜索并替换匹配的正则表达式(srcstr, pattern[,replaces…
阅读目录 1.什么是SQL语句 2.使用sql语句创建数据库和表 3.创建数据表 4.数据完整性约束 5.四中基本字符类型说明 6.SQL基本语句 7.类型转换函数 8.日期函数 9.数学函数 10.字符串函数 11.联合结果集union 12.CASE函数用法 13.IF ELSE语法 14.WHILE循环语法 15.子查询 16.表连接Join 17.事务 18.视图 19.触发器 20.存储过程 21.分页存储过程 22.索引 23.临时表 回到顶部 1.什么是SQL语句 sql语言:结构…
1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.2.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.请附code3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?4..Net中读写数据库需要用到哪些类?他们的作用5.ASP.net的身份验证方式有哪些?分别是什么原理?6.解释一下UDDI.WSDL的意义及其作用.7.常用的调用webservice方法有哪些?8.讲一讲你理解的web se…