Oracle基础快速入门 (6)

   为了使一个变量的数据类型与一个表中记录的各个列的数据类型相对应、一致,Oracle提供%ROWTYPE定义方式。当表的某些列的数据类型改变了之后,这个新定义的变量的数据类型会自动跟随其改变,容易保持一致,也不用修改PL/SQL程序了。当不能确切地知道被参照的那个表的结构及其数据类型时,就只能采用这种方法定义变量的数据类型。

   一行记录可以保存从一个表或游标中查询到的整个数据行的各列数据。一行记录的各个列与表中一行的各个列有相同的名称和数据类型。

调用存储过程的语句

1.EXEC 存储过程名;

2.BEGIN

存储过程名

END;

 

触发器

概念:它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。

按操作分类:

数据操作语言(DML)触发器:insert  update  delete

数据定义语言(DDL)触发器: create  alter drop

复合触发器

INSTEAD OF触发器

用户和系统事件触发器

创建DML触发器

例子:

对emp表的工资(sal)进行修改时,当工资总额超过最高总额100000的限制时,系统必须拒绝修改员工的工资并在屏幕上输出提示

Create or replace trigger tri_sal

Before update of sal

On emp

For each row

Declare

V_sum number(8);

PRAGMA AUTONOMOUS_TRANSACTION;

Begin

Select sum(:new.sal) into v_sum from emp;

If

V_sum>100000

Then

Raise_application_error(-20016,’不允许总工资超过100000!’);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzsf.html