Oracle数据库中的包(七)

news/2024/5/2 12:47:07/文章来源:https://blog.csdn.net/Keep_Trying_Go/article/details/126998503

目录

1.Oracle中包

2.包的创建

(1)可视化方式创建包

(2)以命令方式创建包

①创建包头

②创建包体

③删除包

3.包的初始化

4.重载

①相关概念和注意事项

②系统内置的包


Oracle学习的相关知识点(汇总)

1.Oracle中包

(1)利用包可以将过程和函数安排在逻辑分组中;

(2)包有两个分离的部件:包说明(规范和包头)和包体(主体);他们都分别存储在数据字典中;

(3)包与过程和函数的区别:包仅能存储在非本地的数据库中;

(4)除了相关的对象结合组成,包与依赖性较强的存储子程序相比,其所受的限制较少,并且包的效率比较高;

(5)包就是一个命名的声明部分;任何可以出现在声明中的语句都可以在包中使用,包括过程,函数,游标,类型和变量。

2.包的创建

(1)可视化方式创建包

(2)以命令方式创建包

①创建包头

以命令的方式创建包的话,包含创建包头和包体。

 CREATE [OR REPLACE]PACKAGE [<用户方案名>.]<包名>
    IS | AS  <PL/SQL程序序列>

提示:<PL/SQL 程序序列>中可以是变量,常量及数据类型定义,游标定义,函数,过程定义和参数列表返回类型等。

定义包头时注意以下几点:

(1)包元素的位置可以任意的安排;然而在声明部分,对象必须在引用前进行声明;

(2)包头可以不对任何类型的数据元素进行说明。如,包头可以只带过程和函数说明语句,而不声明任何异常和类型;

(3)对过程和函数的声明都只是对子程序及其参数进行描述,而不带任何代码的说明,实现代码只能在包体中。不同于块声明,在块声明中,过程或函数的代码可以同时出现在其声明部分(也就是在包中声明的,可以在包以外使用)。

②创建包体

CREATE [OR REPLACE]PACKAGE BODY[<用户方案名>.]<包名>
    IS | AS  <PL/SQL程序序列>

③删除包

删除包体:DROP PACKAGE BODY <包名>;

如果同时删除包名和包体:

DROP PACKAGE<包名>

根据上面创建包:

例子:求解学生表中的最高学分。

第一步:创建包头

--创建一个包DEMO_PACKAGE
CREATE OR REPLACE PACKAGE DEMO_PACKAGE
    IS 

--这里没有参数
    FUNCTION maxScore
    --定义返回类型
        RETURN NUMBER;
END;

第二步:创建包体(包体中将包头中定义的函数具体实现)

--创建包体
CREATE OR REPLACE PACKAGE BODY DEMO_PACKAGE
    IS
    FUNCTION maxScore
        RETURN NUMBER
    AS 
    maSco number;
    BEGIN 
        SELECT MAX(score) INTO maSco
            FROM XSB;
        return maSco;
    END maxScore;
    END;
 

  

 

第三步:调用包中的函数

--调用包中的函数
DECLARE 
    maSco number;
BEGIN
    maSco:=DEMO_PACKAGE.maxScore();
    DBMS_OUTPUT.PUT_LINE('最高学分: '||to_char(maSco));
END;

3.包的初始化

当第一次再调用包子程序时,该包将进行初始化(也就是说,将该包从硬盘中读入内存,并启动调用的子程序编译代码,这时系统会该该包中的定义的所有变量分配内存单元)。 

CRETE OR REPLACE PACKAGE BODY<包名>

        IS | AS

        ...

        BEGIN

                <初始化代码>

        END;

4.重载

①相关概念和注意事项

在包的内部,过程和函数都可以被重载,也就是如果C++一样,可以使用一个以上的相同名称,但是参数不同(这里的参数不同,不是指参数名称)。

注意:

(1)两个子程序的参数仅在名称和模式上不同,这个两个子程序是不能进行重载的,例如:

maxScore(ID IN varchar2)和maxScore(ID OUT varchar2);

也就是说不能通过参数名称和模式是否相同来判断可以不可以重载

(2)不能仅仅根据两个子程序的返回类型不同而进行重载,例如:

FUNCTION maxScore RETURN CHAR;

FUNCTION maxScore RETURN NUMBER;

(3)重载子程序的参数类族必须不同,其中的CHAR 和VARCHAR2属于同一个类族。

如maxScore(ID IN char)和maxScore(ID IN varchar2);这两个子程序是不能进行重载的。

②系统内置的包

(1)DBMS_ALERT包:用于数据库报警,允许会话通信;

(2)DBMS_JOB包:用于任务调度服务;

(3)DBMS_LOB包:用于大型对象操作;

(4)DBMS_PIPE包:用于数据库管道,允许会话间通信;

(5)DBMS_SQL包:用于执行动态的SQL;

(6)UTL_FILE包:用于文本文件的输入与输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_12756.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UGeek大咖说 | 直播预告:顺丰高难度可观测性压测实践与应用

本月「UGeek大咖说-大厂可观测」又双叒……来和大家见面了&#xff01;本期大咖说特邀到顺丰科技应用架构高级工程师——李卓做客直播间&#xff0c;用实际案例带我们一起剖析大型复杂系统下可观测性在全链路压测中的落地实践。 往期大咖说我们对可观测性做了很多诠释和分享&a…

2022安徽省赛赛题——B-2任务二:流量分析

有题有环境有解析,要的私我,勿喷! B-2任务二:流量分析 *任务说明:仅能获取Server2的IP地址 1.使用Wireshark查看并分析Server2桌面下的capture.pcapng数据包文件,找出黑客获取到的可成功登录目标服务器Telnet服务的账号密码,并将黑客获取到的账号密码作为Flag值(用户…

开创性的区块链操作系统项目——去中心化簿订单交易所

关于区块链操作系统上的 Web2 和 Web3 先驱系列今天向大家介绍来自Dakai的 Peter、Laszlo 和 Mark 。Web3 开发人员通过他们的去中心化簿订单交易所推进了区块链技术的发展。他们正在使用 Python 和 SQLite 作为数据库引擎来进行开发&#xff0c;他们发现他们可以在区块链操作系…

js与jquery实例-拖动改变列宽和行高

如何通过javascript或者jquery实现改变表格宽度或者行高的功能?今天就把这个功能代码分享给大家,绝对原创哦,代码少而且易懂。先看效果图:html结构:html结构:<!DOCTYPE HTML> <html> <head><meta charset="utf-8"><title>table&…

最适合从事游戏建模这类高薪职业的是这些人,快来看看有你吗?

随着游戏行业的发展&#xff0c;游戏建模受到越来越多的人的关注&#xff0c;那游戏建模的学习适用于什么样的人群呢&#xff1f;今天就来介绍一下吧 01 大学毕业&#xff0c;就业方向不明确 大学期间&#xff0c;本专业知识没有深度掌握&#xff0c;无法从事本专业相关的工作…

Vue3 i18国际化

本文参考了两片文章如下&#xff0c;博文原创&#xff0c;转载附上本博文链接即可 1、基于Vue3.0和ElementPlus开发后台框架(loginbacki18n)_zzzzzzzzzz的博客-CSDN博客_vue3后台框架 &#xff08;这个有点没看懂&#xff09; 2、https://www.jianshu.com/p/fa85595642cd&am…

盘点一个Python网络爬虫实战问题

大家好,我是皮皮。 一、前言 前几天在Python铂金交流群【红色基因代代传】问了一个Python网络爬虫的问题,提问截图如下:代码截图如下:报错截图如下:要么就是原始网页没那么多数据,要么就是你自己取到的数据没那么多,有的有排名,有的没有,可以考虑加个try异常处理。首先…

基于单片机的老人防摔GSM报警

目录 1 跌倒报警器研究现状........................................................................................ 8 2.1单片机的功能及最小系统的电路设计.................................................. 9 内置闪存存储器......................................…

雷鸟乐队 VoxEdit 大赛启动啦,24,500 SAND 奖励等你们来赢取!

是鸟……是飞机……是雷鸟&#xff01; 如果你们选择接受它&#xff0c;那么你们的任务是创造一个受 1960 年代标志性电视剧启发的车辆资产&#xff08;汽车、轮船摩托车等&#xff09;。 不要使用雷鸟的 logo 或对现有的雷鸟作品进行二次创作。 24,500 SAND 将按以下方式分配给…

手机远程控制之scrcpy(一)

有线投屏 无线投屏 屏幕录制 常见问题 错误检查 ERROR: Exception on thread 投屏模糊 scrcpy 是免费开源的投屏软件&#xff0c;支持将安卓手机屏幕投放在 Windows、macOS、GNU/Linux 上&#xff0c;并可直接借助鼠标在投屏窗口中进行交互和录制。 市面上主流的多屏协…

机器人地面站-[QGroundControl源码解析]-[7]-[api]

目录 前言 一.QmlComponentInfo 二.QGCSettings 三.QGCOptions 四.QGCCorePlugin 总结 前言 上篇讲完了Analyize中内容&#xff0c;主要对应界面上AnalyzeTool模块的功能。本篇我们来过api文件夹下的代码。api下的代码主要实现了qgc的核心接口&#xff0c;应用所有的选项…

为什么2022年7月的PMP考试通过率这么低?

2022年 7月考的是新考纲&#xff0c;有50%的敏捷题型&#xff0c;考题相对旧考纲灵活很多&#xff0c;混合型项目内容较多&#xff0c;要是不好好备考&#xff0c;很有可能挂哦&#xff0c;所以 PMI 官方都发布通知&#xff0c;7、8、9 月没考过的考生可以免费重考一次。 但是&…

rk3368-双以太网口

RK芯片以太网补丁android5-12 就打一个补丁就行, 1.\sdk\device\rockchip\common\init.rockchip.rc service dhcpcd_eth1 /system/bin/dhcpcd -aABDKLclass late_startdisabledoneshot 2.添加文件EthernetNetworkFactoryExt.java 给eth1使用:sdk\frameworks\opt\net\ethern…

docker images 命令详解

文章目录一、docker images 命令选项二、docker images 使用实例2.1 显示最近创建的镜像2.2 根据镜像名和tag值查询2.3 查询结果中显示完整的镜像ID2.4 显示镜像的摘要信息2.5 显示未打tag值的镜像2.6 删除未打tag值额镜像2.7 根据标签筛选镜像2.8 根据时间筛选镜像2.9 通过模糊…

uniapp离线打包安卓APP全过程

1、首先就是下载Android Studio&#xff0c;官方下载 就好了。 2、然后就是使用 HBuilderX 离线打包,生成本地打包App资源。 打包好的文件路径在unpackage>resources>__UNI__XXX&#xff0c;这里的这个__UNI__XXX就待会需要的。 3、再准备HBuilder最新的SDK下载好 原生开…

arcgis runtime加载自定义控件并和地图铆钉一起

例如上图这个节点&#xff0c;无论移动还是缩放位置均固定 在Arcgisruntime 中有一个附加属性esri:GeoView.ViewOverlayAnchor"{Binding GeometryFrom}" Bingding里面绑定的就是铆钉的位置&#xff0c;具体用法如下&#xff1a; public partial class MainWindow :…

【黑马程序员 C++教程从0到1入门编程】【笔记5】C++核心编程(类和对象——继承、多态)

黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难 文章目录4.6 继承4.6.1 继承的基本语法普通实现&#xff1a;继承实现&#xff1a;总结&#xff1a;派生类中的成员&#xff0c;包含两大部分&#xff1a;4.6.2 继承方式&#xff08;继承的语法&#xff1a;class 子类 :…

SpringSecurity(二)- SpringSecurity Web权限方案

文章目录一、SpringSecurity Web权限方案1. 设置登录系统的账号、密码方式一&#xff1a;通过配置文件方式二&#xff1a;通过配置类方式三&#xff1a;自定义编写类实现接口2. 实现数据库认证来完成用户登录&#xff08;1&#xff09;准备sql&#xff08;2&#xff09;添加依赖…

cookie/localStorage /sessionStorage的区别

1、webStorage webStorage是HTML5引入的一个重要的功能&#xff0c;在前端开发的过程中会经常用到&#xff0c;它可以在客户端本地存储数据&#xff0c;类似cookie&#xff0c;但其功能却比cookie强大的多。cookie的大小只有4Kb左右&#xff08;浏览器不同&#xff0c;大小也不…

闲话 22.9.23

闲话 about 不知道写什么 | 不闲的闲话 about 杂题闲话 预告一下 继FFT FWT FMT后又出现了FDT(F的T) \(\text{Z}\color{red}{\text{hou}}\) 喜欢在有着秋日气氛的校园里面散步 \(\huge Cdsidi\)喜欢吃七分饱而且巨所以\(_水\)管子炸了 不知道说什么东西 不知道我在说什么?你…