zoukankan      html  css  js  c++  java
  • oracle_开发子程序和包

      包(package)用于组合逻辑相关的PL/sql类型的(例如:table 类型和record类型),pl/sql 项(列如:游标,和游标变量)和pl/sql子程序(例如:过程和函数)

    通过使用pl/sql包不仅可以简化应用设计,提高应用 的性能,还可以实现信息的隐藏,子程序重载等功能。

    下面就针对计算圆的面积来做个演示:

    1—创建包规范

    create or replace package dbutil_package is pi constant number(10,7):=3.1415926;--定义常量pi
    function gatarea(radius number) return number;--计算圆的面积
    procedure print_area;--输出圆的面积
    end dbutil_package;

    执行完上面的命令后创建一个包规范duitil_package,且定义了所有的公用的组件。但是这里只是定义了过程和函数的头部,并没有编写可执行的代码,所以公用的过程和函数

    只有在创建了包实体后才能调用。

    2—创建包实体

    create or replace  package body dbutil_package is area number(10);--定义局部变量
    function getarea(radius number) return number is 
    begin 
    area:=pi*radius*radius;
    return area;
    end;
    procedure print_area is 
    begin
    dbms_output.put_line('圆的面积是:'||area);
    end;
    end dbutil_package;

    is开始的部分定义为私有的组件,并实现包规范中所定义的公用过程和函数,此外包体名和包规范的名字必须相同,

    3—使用包中的组件

    declare
    area number10,7);--声明一个变量
    begin
    area:=dbutil_package.getarea(3);--给变量赋值
    dbms_output.put_line(dbutil_package.getarea(3));--输出变量的值
    end;

    *1.在同一个包内调用组件

    调用时可以直接调用,不需要添加包名作为前缀。

    *2.调用包的公用变量

    在其他应用中调用包的公用变量必须要在公用变量的名前添加包名作为前缀并且其数值在当前会话内一直生效。

    *3调用包的公用子程序

    当在其他的应用中调用包的公用过程时,必须在公用的过程名前添加包作为前缀。

    declare 
    area  number10,7);
    begin
    area:=dbutil_package.getarea(3);--必须要在公用的过程名前添加包做为前缀。
    dbms_output.put_line(area);
    end;
    --执行完了之后会输出
    28.2743334

    *子程序和包的管理

    在创建子程序之后,Oracle 会将子程序名及其源代码信息放在数据字典中。通过查询数据字典user_source,显示当前用户所用程序及源代码。

    删除:drop procedure proce_sum

     drop pachage body;

    drop package;

  • 相关阅读:
    【转】Linux中的特殊权限粘滞位(sticky bit)详解
    【转】Spark实现行列转换pivot和unpivot
    Pyspark 使用 Spark Udf 的一些经验
    CDH 集群机器上部署 Jupyter notebook 使用 Pyspark 读取 Hive 数据库
    Pyspark-SQL 官方 API 的一些梳理(上)
    Kafka-python 客户端导致的 cpu 使用过高,且无法消费消息的问题
    如何创建和管理 MySQL 相关权限
    CDH Yarn 调度资源指南
    Sqoop export(Hive to MySQL) 的一些 reference
    vue2.x学习笔记(二十七)
  • 原文地址:https://www.cnblogs.com/wjn563/p/4074690.html
Copyright © 2011-2022 走看看