• 【Oracle】包及包的调用


    1.概述

    包用于将相关的对象组合在一起,一个任务,需要多个函数或者过程协同才能完成,这时,可以这些函数和存储过程都放在一个包下,方便函数和存储过程的管理,提高程序的性能,在第一次用的时候,会全部读入内存,下次用直接从内存取,加强模块化。

    包分为两部分:

    1.包头(类似java接口)
         包的规范,只包含了函数或存储过程的说明部分
         创建包头语法:
            create [or replace] package 包名 is|as
               --函数定义
               function 函数名 [(参数列表)] return 返回类型;
               --存储过程定义
               procedure 存储过程名 [(参数列表)];
            end [包名]; 
      2.包体(类似java实现类)
         实现包头里定义的规范
         创建包体语法:
            create [or replace] package body 包名 is|as
               --函数实现
               function 函数名 [(参数列表)] return 返回类型 is|as
                  函数实现内容
               --存储过程实现
               procedure 存储过程名 [(参数列表)] is|as
                  存储过程实现内容
            end [包名]; 
    

    2.实战演练

    -- 建立包
    create or replace package emp_pkg is
        TYPE t_ref_cursor is REF CURSOR;
        FUNCTION get_emp_ref_cussor RETURN t_ref_cursor;
        PROCEDURE update_emp_sal(
         e_empno  IN emp.empno%type,
         e_sal number
        );
    end emp_pkg;
    
    -- 建立包体
    create or replace package body emp_pkg is
    
      FUNCTION get_emp_ref_cussor RETURN t_ref_cursor IS
        v_emp_ref_cursor t_ref_cursor;
      BEGIN
        OPEN v_emp_ref_cursor FOR
             SELECT empno, ename, sal 
             FROM emp; 
        RETURN v_emp_ref_cursor;
      END get_emp_ref_cussor;
      
      PROCEDURE update_emp_sal(
                e_empno  IN emp.empno%type,
                e_sal    IN NUMBER
                ) AS
      BEGIN
           UPDATE emp SET SAL = SAL/e_sal WHERE empno = e_empno;
           COMMIT;
      EXCEPTION
           WHEN OTHERS THEN
                DBMS_OUTPUT.put_line(SQLERRM);
           ROLLBACK;
      END update_emp_sal;
      
    END emp_pkg;
    

    2.1 调度包中函数

    select emp_pkg.get_emp_ref_cussor from dual;
    

    输出结果截图:

    2.2 调度包中的过程

    CALL emp_pkg.update_emp_sal(7369, 10000)
    
  • 相关阅读:
    [日志]一个父亲给儿子的忠告
    [健康]预防手足口病中医有妙方
    [日志]教你怎么用一句话把人弄的又好气又好笑
    [健康]出汗与人健康
    [健康]四招,清除体内“垃圾”
    [健康]生病了绝对不能吃的东西
    [日志]塑造自己品牌的方法
    [健康]肾的保健按摩
    [日志]经典道歉短信
    [日志]几个笑话顿悟人生道理
  • 原文地址:https://www.cnblogs.com/OliverQin/p/13223985.html
Copyright © 2020-2023  润新知