背景:
本人小小实习生,oracle小白,,刚刚接触oracle的plsql块。记录下来这个学习过程,有错麻烦各位指出。
情景:
通过遍历查询一个表的结果集,得到结果集中每行结果中的其中一个字段的值,作为另一个查询的where语句查询条件。
之前的解决方案是在service层中遍历第一次查询的结果集,然后在这个遍历过程中多次调用第二个查询的方法,这就导致了在控制层和业务逻辑层只需要一个方法,但到了数据交换层需要分开为两个方法,很繁琐。恰巧之前有了解到oracle中可以通过存储函数实现这个功能,所以学习了下plsql块。
预备知识:
1.plsql代码块基本语法:
DECLARE
--这里声明一些变量②和游标 ③
BEGIN
--需要执行的逻辑 包括一些游标遍历
EXCEPTION
--发生异常的逻辑
END;
2.Oracle中变量类型
这里我就列举下我目前使用到
NUMBER(p,s) 数值类型 p表示精度 s表示小数长度
例如 NUMBER(3,2) 表示的是 整数部分最大是1位,小数部分是2位的数
NUMBER等同于NUMBER(5)
INT
VARCHAR
CHAR
表%ROWTYPE 例如 emp表中有 id,name,dept 三个字段, emp_row emp%ROWTYPE ,变量emp_row 同样有 id,name,dept三个字段。
表.字段%TYPE 例如 emp.id 是number类型的, emp_id emp.id%type 则表示变量emp_id和emp表的id字段是相同的。
3.Oracle游标