Oracle学习--->8、PL/SQL子程序进阶

时间:2021-01-16 05:15:36

1、在SQL中调用子程序

   编写的PL/SQL函数可以像Oracle内置函数一样调用,需要遵循一定的规则:

  • 所有函数必须是IN模式,OUT和IN OUT模式参数是不能被SQL语句使用
  • 函数参数的数据类型和RETURN子句的返回类型必须能被Oracle数据库识别,这是因为PL/SQL兼容所有的Oracle数据类型
  • PL/SQL扩充了自己的类型,比如BOOLEAN/INTEGER/记录/集合、程序员自定义
  • 函数必须被存储在数据库中,在客户端PL/SQL环境中定义的PL/SQL函数是不能被SQL调用到的
  • 自定义函数不能修改数据库表,不能执行DDL语句,比如CREATE TABLE/DROP INDEX
  • 自定义函数不能执行INSERT/DELETE/MERGE/UPDATE
  • 自定义函数不能使用COMMIT/ROLLBACK
自定义可以被调用的子程序
CREATE
OR REPLACE FUNCTION getDepartment ( p_empNo EMPLOYEER.EMPLOYEER_ID%TYPE) RETURN VARCHAR2 AS v_departName EMP_DEPARTMENT.DEPARTMENT_NAME%TYPE; BEGIN SELECT DEPARTMENT_NAME INTO v_departName FROM EMPLOYEER EMP, EMP_DEPARTMENT PAR WHERE EMP.DEPARTMENT_ID = PAR.DEPARTMENT_ID AND EMP.EMPLOYEER_ID = p_empNo; RETURN v_departName; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL; END;
直接调用自定义子程序(getDepartment)
SELECT employeer_id 员工工号, getDepartment (employeer_id) 员工部门 FROM EMPLOYEER;

 2、嵌套子程序

 

 

3、子程序的向前声明

 

 

4、重载子程序

 

 

5、子程序自治事务

 

 

6、递归调用子程序

 

 

7、理解子程序依赖性

 

 

8、子程序权限管理