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

  • 相关阅读:
    SQL时间段获取
    HqlBuilder之二(使用AspNetPager分页控件)
    HqlBuilder
    遭遇:TargetException: 对象与目标类型不匹配。
    让全站的页面不能前进和后退
    我的VS2003没有鼠标悬停提示的解决方法
    用动态控件模拟复合控件
    从C# 到 Java 点滴
    转:RBAC的解释
    如果非要用CustomValidator+WebService+asp.net ajax进行验证
  • 原文地址:https://www.cnblogs.com/LiGengMing/p/6096471.html
Copyright © 2011-2022 走看看