包:

在公司中,如果业务逻辑比较复杂,需要定义很多过程或者函数。有可能需要定义几十个过程或者函数,这些过程或者函数如果都放到一起,是不是不好管理?我们一般使用包来管理过程或者函数,一个包中可以定义多个函数或者过程。
一个包包括包和包体。需要同时定义包和包体,这种写法又类似于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';

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. 使用GML的八方向自动寻路

    使用GML的八方向自动寻路 本教程适合无基础人员使用. 提示 本教程中仅使用了最简单的方法,并且有一些错误和不规范之处.请谅解一下,在评论区提出,我会修改.古人曰"教学相长",希望 ...

  2. Eureka源码分析

    源码流程图 先上图,不太清晰,抱歉 一.Eureka Server源码分析 从@EnableEurekaServer注解为入口,它是一个标记注解,点进去看 注解内容如下 /** * 激活Eureka服 ...

  3. [PHP]$_SERVER参数详情

    来源:PHP中$_SERVER的详细参数与说明 $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关.$_SERVER['argv'] #传递给该脚 ...

  4. Windows 上安装msql库安装(基于8.0.19免安装版)

    一.进入官网进行下载mysql程序包: https://dev.mysql.com/downloads/mysql/ 二.解压缩 解压文件夹到指定目录,我放在 D:\mysql-8.0.19-winx ...

  5. 实例讲解Springboot以Template方式整合Redis及序列化问题

    1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可 ...

  6. linux下文本三剑客之sed

    继上一篇对正则表达式以及linux三剑客grep的讲解后,这一篇对sed重点介绍. 一.sed简介   sed表示流编辑器(Stream Editor).这是一个简单但功能强大的工具,分析文本,并无缝 ...

  7. php里的闭包函数

    一个匿名函数内要获取外部的变量必须要使用use: $message = 'hello'; $example = function() use ($message){ var_dump($message ...

  8. 我做了一个 HTML 可视化编辑工具,有前途吗?

    疫情在家的这段时间,我做了一个 HTML 可视化编辑工具,做的时候信心满满,差不多完成了,现在反而不如以前信心足了,这玩意有用吗?代码地址: https://github.com/vularsoft/ ...

  9. Android:RelativeLayout 内容居中

    Android RelativeLayout 内容居中解决办法: 使用Linearlayout本来利用父控件的gravity属性是很好解决的.但是对应RelativeLayout虽然有gravity属 ...

  10. 徐州赛区网络预赛 D Easy Math

    比赛快结束的适合看了一下D题,发现跟前几天刚刚做过的HDU 5728 PowMod几乎一模一样,当时特兴奋,结果一直到比赛结束都一直WA.回来仔细一琢磨才发现,PowMod这道题保证了n不含平方因子, ...