zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    小程序接入第三方ui库(组件库)
    element ui表格的校验和自定义校验规则
    element ui表格 表头的的特殊处理(换行/jsx风格表头)以及上传组件的一点小问题
    MongoDB 配置本地服务
    乙方渗透测试之Fuzz爆破
    SSRF漏洞挖掘经验
    SQL注入绕过技巧总结
    Xss Bypass备忘录
    bilibili存储型xss (绕过长度限制打乱顺序限制)
    XSS攻击常识及常见的XSS攻击脚本汇总
  • 原文地址:https://www.cnblogs.com/wust221/p/3072280.html
Copyright © 2011-2022 走看看