包:

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

创建包体:

  1. -- 定义包体,用来实现包
  2. create or replace package body pac_area is
  3. --把面积参数定义成包体的成员变量,这样函数也可以使用这个变量
  4. v_area number(5,2);
  5. -- 实现过程
  6. procedure pro_area(v_r number) is
  7. begin
  8. v_area:=v_pi*v_r*v_r;
  9. dbms_output.put_line('圆的面积是:'||v_area);
  10. end;
  11. --实现函数,注意,调用该函数前,一定要先调用过程
  12. function fun_area return number is
  13. begin
  14. return v_area;
  15. end;
  16. end;
调用包中的过程或者函数,在函数或者过程前加上包名就可以了:
  1. --使用匿名块调用包中的过程和函数
  2. declare
  3. v_area number(5,2);
  4. begin
  5. -- 调用打印圆的面积的过程
  6. pac_area.pro_area(2);
  7. -- 调用获取圆的面积的函数
  8. v_area :=pac_area.fun_area();
  9. dbms_output.put_line('函数计算的圆的面积是:'||v_area);
  10. end;
管理 :过程 、函数、 包
如何删除过程、 函数、包
drop procedure 过程名;
drop function 函数名;
drop package 包名;
查询oracle中定义的包 函数 过程从user_source表查找。
  1. select * from user_source where type='PACKAGE BODY' AND name='PAC_AREA';

Oracle创建包的更多相关文章

  1. oracle创建包后执行报错:object omgmig.test_package is invalid.

    今天学习了一下oracle的包的写法,然后碰到这么个问题.包声明和包主体都正确,但是就是执行报错:object omgmig.test_package is invalid. 这是会报错的sql,看起 ...

  2. oracle 创建包体的一些问题

    1. PLS-00201:必须声明标识符'A1' PLS-00304: 如果没有说明, 则无法编译'A1'主体 解决办法: 用sysdba身份 把A1包的执行权限给这个用户. 举例: 1.C:\Use ...

  3. Oracle中包的创建

    包是过程和函数的集合体,包包括创建包和创建包体,创建包的时候在可以定义过程和函数,包体中则具体实现过程和函数. eg: --创建包 create  or replace package mypac1 ...

  4. oracle 之 包,包体创建和使用案例

    先创建包,再创建包体---------------创建包体--------------------- create or replace package body pkg_yygl_service I ...

  5. Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例

    Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13|  分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...

  6. Oracle创建上下文 SYS_CONTEXT

    Oracle创建上下文 SYS_CONTEXT 1. 系统默认的一些参数 set heading offselect SYS_CONTEXT('USERENV', 'TERMINAL') termin ...

  7. oracle(创建数据库对象)

    1 --创建数据库 2 --1.SYSDBA系统权限 3 startup:--启动数据库. 4 shutdown:--关闭数据库. 5 alter database[mount]|[open]|[ba ...

  8. 利用Oracle创建表空间和用户

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...

  9. 利用Oracle创建数据库

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217151.html 数据库的创建 打开"所有程序"-" ...

随机推荐

  1. Java的多线程编程模型5--从AtomicInteger开始

    Java的多线程编程模型5--从AtomicInteger开始 2011-06-23 20:50 11393人阅读 评论(9) 收藏 举报 java多线程编程jniinteger测试 AtomicIn ...

  2. AJ学IOS(40)UI之核心动画_抖动效果_CAKeyframeAnimation

    AJ分享,必须精品 效果: 效果一: 效果二: 代码: // // NYViewController.m // 图片抖动 // // Created by apple on 15-5-8. // Co ...

  3. 2019-08-02【机器学习】有监督学习之分类 SVC算法 实例(上证指数跌涨预测)

    样本: 代码:有几处与教程不同,自行修改 import pandas as pd import numpy as np from sklearn import svm from sklearn imp ...

  4. 安卓广播api介绍,给自己理清楚概念

    广播接收器类概述 这是用于接收由sendBroadcast()发送intent的基类.这个类一般都会被继承重写里面的onReceive()方法..如果您不需要跨应用程序发送广播,请考虑使用LocalB ...

  5. Eugene and an array CodeForces - 1333C (思维)

    题目大意:求好数组的个数,所谓好数组 1好数组是原数组的一段连续的子数组,2 好数组不包含元素和为0的子数组. 题解:唉,这个题目把我给些懵了....我一开始的想法求后缀和,保存位置,然后枚举前缀和, ...

  6. python selenium模块 xpath定位

    ''' 附w3xpath语法地址 https://www.w3school.com.cn/xpath/xpath_syntax.asp 总结: 返回匹配到所有符合条件的第一个节点,对象是 <cl ...

  7. AI-web-1靶机过关记录

    靶机地址:172.16.1.195 Kali地址:172.16.1.107 1.信息收集 端口扫描: 目录扫描: 发现robots.txt敏感文件,查看 存在/m3diNf0/,/se3reTdir7 ...

  8. 2019-2020-1 20199308《Linux内核原理与分析》第一周作业

    Linux 基础入门(新版)学习笔记 实验二 基本概念及操作 重要快捷键 Tab 补全命令 Ctrl+c 强行终止当前命令 历史命令 方向上键↑,恢复之前输入过的命令 通配符 在命令行中获取帮助 某个 ...

  9. java零基础自学网站分享

    俗话说工欲善其事,必先利其器,今天给大家分享一个java自学网站:how2j,这是一个有十年淘宝工作经验大牛的制作的网站,距离现在已经有三四年了,这个网站包含的知识非常的多,从基础的环境变量配置一直到 ...

  10. (转)对 Linux 新手非常有用的 20 个命令

    你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳 ...