• Oracle学习笔记二十五:包的定义与调用


    一、包的作用

    • Oracle中包的概念与Java中包的概念非常类似,只是Java中的包是为了分类管理类,但是关键字都是package。

    • 在一个大型项目中,可能有很多模块,而每个模块又有自己的过程、函数等。而这些过程、函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起的,即Procedures中),这些非常不方便查询和维护,甚至会发生误删除的事件。所以通过使用包就可以分类管理过程和函数。

    • 包中还可以自定义自定义类型,从而在过程和函数中可以直接使用自定义变量。

    二、包的构成

    • 包规范部分

    • 包体部分

    --包规范定义语法
    create or replace package 包名
    as |is
        --定义存储过程
        --定义函数
        --定义ref游标类型
    end 包名;
    
    --包体定义语法
    create or replace package body 包名
    is |as
        --实现存储过程
        --实现函数
    end 包名;

    三、包的实例

    • 定义包:

    --定义包规范
    create or replace package getemp_package
    as
        --定义一个游标类型
        type emp_cursor_type is ref cursor;
        --定义一个存储过程
        procedure getemp(p_sal in number,c_emp out emp_cursor_type);
    end getemp_package;
    
    --定义包体
    create or replace package body getemp_package
    as
        --实现存储过程
        procedure getemp(p_sal in number,c_emp out emp_cursor_type)
        as
        begin
            --打开游标
            open c_emp for select * from emp where sal>p_sal;
        end getemp;
    end getemp_package;

    • 调用包:

    set serveroutput on;
    declare
        c_out getemp_package.emp_cursor_type;
        v_emp emp%rowtype;
    begin
        getemp_package.getemp(p_sal=>900,c_emp=>c_out);
        loop
            fetch c_out into v_emp;
            exit when c_out%notfound;
            dbms_output.put_line(v_emp.empno || '-' || v_emp.ename);
        end loop;
    end;
  • 相关阅读:
    2020系统综合实践 第6次实践作业 04组
    2020系统综合实践 第5次实践作业
    2020系统综合实践 第4次实践作业
    2020系统综合实践 第3次实践作业
    2020系统综合实践 第2次实践作业
    2020系统综合实践 第1次实践作业
    软工实践个人总结
    观光队2019 SDN大作业
    Spring Cloud微服务调用Feign初探
    个人作业——软件工程实践总结&个人技术博客
  • 原文地址:https://www.cnblogs.com/atomy/p/16345450.html
Copyright © 2020-2023  润新知