【ORACLE+PLSQL学习笔记#6】PLSQL+存储函数+存储过程+触发器
**
PLSQL
常见写法:select into语句可以在PLSQL中引入表数据,赋值给当前plsql声明的变量。
■变量类型
属性类型可以在不知道数据类型的情况下,自动引入表中数据的类型:
属性引用类型:
表名.数据列名%type
属性行记录类型,记录结果集一整行信息的行单位:
行变量 表名%rowtype
**
■异常处理
**
PLSQL也有类似于Java的异常处理,当数据操作不合法时及时暂停程序避免崩溃。以下仅从无该数据、返回多条数据两种预定义异常为例。
返回多条数据:
无该数据:
如果忘记在异常里面写逻辑也会报错:
■条件判断
■循环
plsql循环语句有纯loop循环和混合了for、loop关键字的for循环,while和exit关键字分别指示’当‘和’退出‘。
循环数据溢出会报错:
■游标
select into只能做到单个数据返回,游标用法可以弥补其不能返回结果集的缺憾。游标常用于遍历结果集,与循环挂钩。
loop游标:
for游标:
相比之下,用法上,loop游标比for游标复杂得多,差别在于很多参数设置、绑定操作,for游标可以自动补全。
存储函数
存储函数常常用于SQL语句中,很少作用于应用程序的编写,被查询语句调用,达到简化SQL的目的。
存储过程
和存储函数的主要区别:
由于存储过程无直接返回值,但可以有传出参数。故可以将存储过程分为有无传出参数两类。以下是这两类存储过程的用法:
■无传出参数的存储过程
在jdbc上面的应用:
■有传出参数的存储过程
在jdbc上的应用:
触发器
前置触发器可以在事务提交之前更改修改值,是一种事前处理方式,后置触发器比较听话不能更改修改值,改什么就是什么,是一种事后的处理方式。
前置触发器可以直接调用并修:new和:old伪列的值,而后置触发器并不能,只能简单调用不然报错。
■前置触发器
■后置触发器