【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器

**

PLSQL

常见写法:select into语句可以在PLSQL中引入表数据,赋值给当前plsql声明的变量。

变量类型
属性类型可以在不知道数据类型的情况下,自动引入表中数据的类型:
属性引用类型:
表名.数据列名%type

属性行记录类型,记录结果集一整行信息的行单位:
行变量 表名%rowtype
**
异常处理
**
PLSQL也有类似于Java的异常处理,当数据操作不合法时及时暂停程序避免崩溃。以下仅从无该数据、返回多条数据两种预定义异常为例。
返回多条数据:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器

无该数据:【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
如果忘记在异常里面写逻辑也会报错:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
条件判断
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
循环
plsql循环语句有纯loop循环和混合了for、loop关键字的for循环,while和exit关键字分别指示’当‘和’退出‘。
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
循环数据溢出会报错:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
游标
select into只能做到单个数据返回,游标用法可以弥补其不能返回结果集的缺憾。游标常用于遍历结果集,与循环挂钩。
loop游标:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
for游标:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
相比之下,用法上,loop游标比for游标复杂得多,差别在于很多参数设置、绑定操作,for游标可以自动补全。

存储函数

存储函数常常用于SQL语句中,很少作用于应用程序的编写,被查询语句调用,达到简化SQL的目的。
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器

存储过程

和存储函数的主要区别:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
由于存储过程无直接返回值,但可以有传出参数。故可以将存储过程分为有无传出参数两类。以下是这两类存储过程的用法:
无传出参数的存储过程
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
在jdbc上面的应用:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
有传出参数的存储过程
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
在jdbc上的应用:
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器

触发器

前置触发器可以在事务提交之前更改修改值,是一种事前处理方式,后置触发器比较听话不能更改修改值,改什么就是什么,是一种事后的处理方式。
前置触发器可以直接调用并修:new和:old伪列的值,而后置触发器并不能,只能简单调用不然报错。

前置触发器
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
后置触发器
【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器