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


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

  • 相关阅读:
    MySQL——视图/触发器/事务/存储过程/函数/流程控制
    python连接MySQL/redis/mongoDB数据库的简单整理
    docker安装和使用
    【Python】Django2.0集成Celery4.1详解
    django-haystack全文检索详细教程
    ubuntu16.04安装FastDFS-5.08
    redis之django-redis
    uva 1152 4 Values whose Sum is 0
    2015暑假acm短训小结
    Uva 12569 Planning mobile robot on Tree (EASY Version)
  • 原文地址:https://www.cnblogs.com/LiGengMing/p/6096471.html
Copyright © 2020-2023  润新知