zoukankan      html  css  js  c++  java
  • 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';
  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/duguangming/p/10846460.html
Copyright © 2011-2022 走看看