• oracle数据库笔记1PL/SQL基础6包


    包是存储在一起的相关对象组成的P L / S Q L结构
    
    包有两个独立的部分,即说明部分和包体
    这两部分独立地存储在数据字典中 
    
    包的类型:
    1自定义包:
    2 oracle内置包
    
    自定义包:
    
    包的规格说明部分:
    CREATE [OR REPLACE] PACKAGE <package_name> IS|AS
      <Public type and item declarations> -- 公有类型声明
      < Public Subprogram specifications> -- 公有子程序声明
    END <package_name>;
    
    程序包主体部分:
    CREATE [OR REPLACE] PACKAGE BODY <package_name> IS|AS
      <Private type and item declarations> -- 私有类型声明
      < Private Subprogram bodies> -- 私有子程序体
      < Private cursor define>   -- 私有游标定义
      < putblic Subprogram bodies> -- 公有子程序体
      < putblic cursor define>   -- 公有游标定义
    END <package_name>; 
    
    一个范例的包和包体程序:
    
    CREATE OR REPLACE PACKAGE pack_me IS
        PROCEDURE order_proc (orno varchar2);
        FUNCTION order_fun (ornos varchar2) RETURN varchar2;
    END pack_me;
    
    CREATE OR REPLACE PACKAGE BODY pack_me AS 
        /* 实现定义的存储过程 */
        PROCEDURE order_proc (orno varchar2)  IS
        stst CHAR(1);
       BEGIN
        SELECT ostatus INTO stat FROM order_master
        WHERE orderno = orno;
        IF stat = 'p' THEN
          DBMS_OUTPUT.PUT_LINE('暂挂的订单');
        ELSE
         DBMS_OUTPUT.PUT_LINE('已完成的订单');
        END IF;
       END order_proc;
        /* 实现定义的函数 */
        FUNCTION order_fun(ornos varchar2) RETURN varchar2 IS
        icode varchar2(5);
        ocode varchar2(5);
       qtyord NUMBER;
        qtydeld NUMBER;
        BEGIN
       SELECT qty_ord, qty_deld, itemcode, ordernc INTO qtyord, qtydeld, icode, ocode
        FROM order_detail
        WHERE orderno = ornos;
        IF qtyord < qtydeld THEN
          RETURN ocode;
        ELSE
          RETURN icode;
        END IF;
       END order_fun;
    END pack_me;
    
    要执行 pack_me包中的 order_proc过程,输入 EXECUTE pack_me.order_proc('o002');
    
    要执行包中预定义的函数
    
    DECLARE
      msg varchar2(10);
    BEGIN
      msg := pack_me.order_fun('o002');
      DBMS_OUTPUT.PUT_LINE('值是 ' || msg);
    END;
    
    ORACLE内置包的作用 :
    1.扩展数据库的功能
    2.为 PL/SQL 提供对 SQL 功能的访问
    3.用户 SYS 拥有所有程序包,可以由任何用户访问
    
    
    常用的系统包:
    
    DBMS_ALERT支持数据库事件的异步通知
    DBMS_STANDARD提供语言工具
    DBMS_DDL某些DDL命令的PL/SQL等效项
    CALENDAR提供日历维护功能
    DBMS_LOB操纵ORACLE的LOB数据
    DBMS_OUTPUT在SQL*PLUS或服务管理器中提供屏幕输出
    DBMS_PIPE会话间异步通信
    DBMS_ROWID允许从ROWID获得信息
    DBMS_SESSIONALTER SESSION的PL/SQL等效项
    DBMS_SQL动态PL/SQL和SQL
    

      

  • 相关阅读:
    Android Weekly Notes Issue #428
    《五分钟商学院》个人篇脑图总结笔记(下)
    《五分钟商学院》个人篇脑图总结笔记(上)
    Exceptionless 5.x 无法正常发送邮件的问题解决
    跟玄姐学习技术管理的哲学本质
    观影《八佰》:一边是天堂,一边是地狱
    跟玄姐学习三种架构设计思维模型
    逻辑的工具
    git使用分支文件替换当前分支文件
    认识和理解即构建
  • 原文地址:https://www.cnblogs.com/wust221/p/3072280.html
Copyright © 2020-2023  润新知