• Oracle创建包


    包:

    在公司中,如果业务逻辑比较复杂,需要定义很多过程或者函数。有可能需要定义几十个过程或者函数,这些过程或者函数如果都放到一起,是不是不好管理?我们一般使用包来管理过程或者函数,一个包中可以定义多个函数或者过程。
    一个包包括包和包体。需要同时定义包和包体,这种写法又类似于java中的接口和接口的实现。包相当于接口,包体相当于接口的 实现类。
    创建包的语法:
      create [or replace] package 包名 is
      --声明常量
      -- 声明函数或者过程 ,但是不能有实现
      end;
    创建包体的语法:
      create [or replace] package body 包名 is
      --包的实现
      end;
      举例:定义包,计算圆的面积
    创建包:
    -- 定义包 计算圆的面积
    create or replace package pac_area is
    -- 定义pi常量
    v_pi constant number(5,2):=3.14;
    --定义计算圆的面积的过程,打印圆的面积
    procedure pro_area(v_r number);
    --定义一个获取圆的面积的函数
    function fun_area return number;
    end;

    创建包体:

    -- 定义包体,用来实现包
    create or replace package body pac_area is
    --把面积参数定义成包体的成员变量,这样函数也可以使用这个变量
    v_area number(5,2);
    -- 实现过程
    procedure pro_area(v_r number) is
    begin
    v_area:=v_pi*v_r*v_r;
    dbms_output.put_line('圆的面积是:'||v_area);
    end;
    --实现函数,注意,调用该函数前,一定要先调用过程
    function fun_area return number is
    begin
    return v_area;
    end;
    end;
    调用包中的过程或者函数,在函数或者过程前加上包名就可以了:
    --使用匿名块调用包中的过程和函数
    declare
    v_area number(5,2);
    begin
    -- 调用打印圆的面积的过程
    pac_area.pro_area(2);
    -- 调用获取圆的面积的函数
    v_area :=pac_area.fun_area();
    dbms_output.put_line('函数计算的圆的面积是:'||v_area);
    end;
    管理 :过程 、函数、 包
    如何删除过程、 函数、包
    drop procedure 过程名;
    drop function 函数名;
    drop package 包名;
    查询oracle中定义的包 函数 过程从user_source表查找。
    select * from user_source where type='PACKAGE BODY' AND name='PAC_AREA';
  • 相关阅读:
    详细讲解 关于Linux静态库和动态库的分析
    linux下的共享库(动态库)和静态库
    原子性
    TCP-心跳
    linux alsa pcm(此pcm非硬件pcm接口)
    linux音频 DAPM之二:audio paths与dapm kcontrol
    linux 音频驱动
    imx6qsbd kpp
    nand flash详解及驱动编写
    嵌入式Qt程序启动参数-qws 不需要X11桌面系统
  • 原文地址:https://www.cnblogs.com/duguangming/p/10846460.html
Copyright © 2020-2023  润新知