PL/SQL简介(二)

2014-11-24 16:26:45 · 作者: · 浏览: 1
结果类型

2.定义游标类型的变量


变量名称 游标类型名称

过程和函数

过程(procedure)又叫存储过程(stored procedure),是一个有名称的PL/SQL程序块
过程相当于java中的方法,它注重的是实现某种业务功能
函数(function)也相当于java中的方法,它注重计算并且总是有返回结果
过程和函数都是能够永久存储在数据库中的程序代码块,应用时通过调用执行

过程的基本结构

create [or replace ] procedure 过程名称(形参名称 形参类型,形参名称 形参类型······)
is | as
定义变量
begin
过程体
exception
异常
end;


1.含有输入参数的过程

输入参数 用in 标识 可省略

2.无参的过程

3.有输出参数的过程

输出参数用 out 标识

过程的调用

1.通过匿名块调用

输入参数

输出参数过程

无参的过程

begin
mypro_noparam;
end;

2.命令行调用

调用输入参数
SQL> exec mypro(7788,3000);
输出参数
SQL> var v_sal number; 注册变量
SQL> exec mypro(7788,:v_sal); :变量名称 使用变量接收输出
调用无参
SQL> exec mypro;

示例代码:
1.写一个过程封装emp表中的数据
2.写一个过程输入员工编号,通过游标获取输出该员工对应下属的信息

3./*计算100-200的素数*/


3.通过java调用过程
java调用过程代码示例

自定义函数

function.sql代码示例

异常

系统异常分为预定义异常和非预定义异常预定义异常,是由数据库定义好,含有异常编码,异常名称,异常信息的这么一种异常;大概有20种,例如too_many_rouws;no_data_found;zero_divide. 非预定义异常:异常编码,异常信息,但没有异常名称 非预定义异常代码示例

自定义异常

自定义异常代码示例


包用于管理过程和函数包分为包头和包体
包的代码示例

jdbc调用含有包的过程体的代码示例

注:包一定要有包头,包头负责声明函数、过程、变量和常量包体具体来实现包头所声明定义的函数和过程包体封装实现包头可单独定义,那么单独定义的包头只能含有常量

触发器 trigger

类似java中的Listener
触发器由数据库管理系统负责调用和执行通过触发触发器所监听的事物来实现触发器的调用
表级别的触发器(对于整个数据库表做监听)行级别的触发器(对于表中的每一行做监听)

触发器代码示例

注:触发器的执行顺序

有表级别的触发器,行级别的触发器作用于同一个表

1.before表级别触发器 2.before 行级别触发器 3.after 行级别触发器 4.after 表级别触发器

系统触发器

DBA用来调试系统 on database

注: 触发器不带参数,没有放回值,不作事务处理