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、子程序权限管理