zoukankan      html  css  js  c++  java
  • 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、子程序权限管理

  • 相关阅读:
    pair和map
    lower_bound( )和upper_bound( )
    P1886 滑动窗口 /【模板】单调队列
    数的度(数位dp)
    最小生成树
    刷题-力扣-1052. 爱生气的书店老板
    刷题-力扣-766. 托普利茨矩阵
    刷题-力扣-28. 实现 strStr()
    刷题-力扣-697. 数组的度
    刷题-力扣-1004. 最大连续1的个数 III
  • 原文地址:https://www.cnblogs.com/LiGengMing/p/6096471.html
Copyright © 2011-2022 走看看