ORACLE PACKAGE 包详解

Oracle 包详解(package) 文章目录1 概述2 示例3 请注意 1 概述 1. 包的概念 (1) 模块化的思想,用于分类管理过程(procedure)和函数(function) (2) 类似于 Java、Python 等语言中的 类(class) 2. 包的组成(程序部署顺序:'先执行包头,再执行包体') (1) 包头:package (2) 包体:package body 3. 授权: grant execute on 属主.包名 to 用户1, 用户n; 4. 调用: '属主.包名.存储过程名()' 或 '属主.包 阅读详情
  1. ORACLE PACKAGE 包 详解  
  2.   
  3. 包是一组相关过程、函数、变量、常量#SinaEditor_Temp_FontName、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。一个包由两个分开的部分组成:  
  4. (1)包package声明或定义:包定义部分是创建包的规范说明,声明包内数据类型、变量、常量、游标等元素。这部分也是为使用者提供了透明的接口。  
  5. (2)包体packpage body:包体是包定义部分的具体实现。  
  6. (3)将有联系的对象打成包,方便使用  
  7. (4)包中对象包括储存过程,函数,游标,自定义类型和变量,可以在PL_SQL块中应用这些对象.  
  8.   
  9. 定义包头:  
  10. ----------------------------------------------------------------------------------------------  
  11. create or replace package <Package_name> is  
  12.   type <TypeName> is <Datatype>;--定义类型  
  13.   -- Public constant declarations  
  14.   <ConstantName> constant <Datatype> := <Value>;--声明常量  
  15.   -- Public variable declarations  
  16.   <VariableName> <Datatype>;  --数据类型  
  17.   -- Public function and procedure declarations  
  18.   function <FunctionName>(<Parameter> <Datatype>) return <Datatype>; --函数  
  19. end <Package_name>;  
  20.   
  21. 定义包体:  
  22. ----------------------------------------------------------------------------------------------  
  23. create or replace package body <Package_name> is  
  24.   -- Private type declarations  
  25.   type <TypeName> is <Datatype>;  
  26.   -- Private constant declarations  
  27.   <ConstantName> constant <Datatype> := <Value>  
  28.   -- Private variable declarations  
  29.   <VariableName> <Datatype>;  
  30.   -- Function and procedure implementations  
  31.   function <FunctionName>(<Parameter> <Datatype>) return <Datatype> is --函数的具体内容  
  32.     <LocalVariable> <Datatype>;  
  33.   begin  
  34.    <Statement>;  
  35.     return(<Result>);  
  36.   end;  
  37. begin  
  38.   -- Initialization--初始化包体,每次调用时被初始化  
  39.   <Statement>;  
  40. end <Package_name>;  
  41.   
  42. 只有当包头编辑成功后才能编辑包体.其中的函数名与过程名须和包头中的函数过程一样.  
  43.   
  44. 1 包说明和包体必须有相同的名字  
  45. 2 包的开始没有begin语句,与存储过程和函数不同。  
  46. 3 在包的说明部分定义函数和过程的名称和参数,具体实现在包体中定义。  
  47. 4 在包内声明常量、变量、类型定义、异常、及游标时不使用declare。  
  48. 5 包内的过程和函数的定义不要create or replace语句。  
  49. 6 包声明和包体两者分离。  
  50.   
  51. 包头(Package)与包体(Package body)的应用  
  52.   
  53. 包的作用: 根据出生年月返回年龄function Getage,返回工资function Getsalary  
  54. --创建环境  
  55. Create Table T_PsnSalary  --工资表  
  56. (  
  57. Fpsncode varchar(4) default '',  --个人代码  
  58. Fpsndesc varchar(20) default '',  --描述  
  59. FpsnBirth varchar(20) default '', --生日  
  60. FpsnSalary number(8,2)            --工资  
  61. );  
  62.   
  63. --添加数据  
  64. Insert into T_PsnSalary(Fpsncode,Fpsndesc,FpsnBirth,FpsnSalary) Values('C001','张三','1986.01.10',1100);  
  65. Insert into T_PsnSalary(Fpsncode,Fpsndesc,FpsnBirth,FpsnSalary) Values('C002','李四','1980.10.10',3000);  
  66. Insert into T_PsnSalary(Fpsncode,Fpsndesc,FpsnBirth,FpsnSalary) Values('C003','王五','1996.12.10',800);  
  67. commit;  
  68.   
  69. --创建包头  
  70. create or replace package package_demo is  
  71.  function Getage(birthst varchar,birthend varchar) return integer;  
  72.  function Getsalary(VFpsncode varchar) return number;  
  73. end package_demo;  
  74.   
  75. --创建包体  
  76. create or replace package body package_demo is  
  77.   function Getage(birthst varchar,birthend varchar) return integer --得到年龄函数  
  78.   is  
  79.     V_birth integer;  
  80.     ToDateEnd Date;  
  81.     Toyear number(4);  
  82.     Tomonth number(4);  
  83.     Fromyear number(4);  
  84.     Frommonth number(4);  
  85.   begin  
  86.     if (birthend='') or (birthend is null) then   
  87.       select sysdate into ToDateEnd from dual;         --得到系统时间  
  88.     end if;  
  89.     Toyear := to_number(to_char(ToDateEnd,'YYYY'));    --得到最后年月  
  90.     Tomonth := to_number(to_char(ToDateEnd,'MM'));  
  91.     Fromyear := to_number(substr(birthst,1,4));        --计算的年月  
  92.     Frommonth := to_number(substr(birthst,6,2));  
  93.     if Tomonth-Frommonth>0 then  
  94.       V_birth:=Toyear-fromyear;  
  95.     else  
  96.       V_birth:=Toyear-fromyear-1;  
  97.     end if;  
  98.     return(V_birth);  
  99.   end Getage;  
  100.   
  101.   function getSalary(VFpsncode varchar) return number  --返回工资情况  
  102.   is  
  103.     V_psnSalary number(8,2);  
  104.   begin  
  105.     Select FpsnSalary into V_psnSalary from T_PsnSalary where Fpsncode = VFpsncode;  
  106.     return(V_psnSalary);  
  107.   end getSalary;   
  108. end package_demo;  
  109.   
  110. select a.*,package_demo.Getage(Fpsnbirth,'')age from T_psnsalary a;  --调用包得到年龄功能  
  111. select package_demo.getsalary('C001') from dual;                     --代码得到工资  
STM32驱动电磁阀电路设计:从光耦选型到MOSFET驱动的实战解析 本文深入解析了STM32驱动24V电磁阀的完整电路设计,重点探讨了光耦选型与MOSFET驱动两大核心环节。针对电平转换与电气隔离需求,详细对比了EL357N与TLP2310等光耦在CTR、速度及耐压等关键参数上的差异与应用场景。同时,文章提供了MOSFET关键参数解读、驱动电路优化方案(如推挽驱动)以及完整的PCB布局、电源处理与调试避坑指南,旨在帮助工程师构建稳定可靠的工业控制电路。 阅读详情

相关推荐

告别CPU空转!用STC8的SPI+DMA高效驱动上百颗WS2812B灯珠

本文详细解析了如何利用STC8单片机的SPI+DMA外设高效驱动WS2812B全彩灯珠,解决传统软件延时驱动方式在长灯带应用中的性能瓶颈。通过硬件方案设计、数据格式转换和DMA传输配置,实现高达400Hz的刷新率和低于5%的CPU占用率,适用于大规模灯光项目。

weixin_30847939的博客 397

oracle基础知识积累-创建Packages和Packages bodies

场景: 基础知识查询 动机: 纯粹基础知识积累,便于后续查询.在很多场合,负责人们都在谈论去IOE话题, 所以,难免使用场合会或多或少会减少,于是按照习惯的思路记录一下. 环境: Oracle Database 11g; PL/SQL Developer 1.功能 创建Packages和Packages bodies是为了更好管理存储过程 2.创建Packages...

zhangbeizhen18的博客 2701

基于gem5模拟trace的cache模拟器的实现

在做计算机体系结构的时候,模拟器是一个重要且又有效的工具。其中gem5集成了gem和m5的优点,使用起来比较简单和方便。其中包括了se模式和fs模式,se模式是在gem5运行我们已经编译好的程序,可以获取cache,cpu状态等数据,fs模式下可以模拟操作系统,我们可以将我们自己修改的linux内核加载到哥们上运行。下面介绍了使用gem5的se模式,运行编译好的ARM可执行文件。获取访存的trac

gaoxiang的专栏 8891

oracle新建packbodies,oracle-学习笔记-5

16.Oracle 小问题Oracle Package有哪些作用呢?简化应用设计、提高应用性能、实现信息隐藏、子程序重载。ORACLE中的function 、package、package bodies、procedure的有什么区别和相同的地方?function有返回值,有参数;procedure无返回值,有参数;package、package body是同时存在的,就像.h和.cp...

weixin_29476767的博客 599

告别转换超时!手把手教你用Allegro2Altium.bat搞定AD21导入Allegro 17.2文件

本文详细介绍了如何使用Allegro2Altium.bat工具解决AD21导入Allegro 17.2文件时的转换超时问题。通过理解转换机制、准备离线环境、执行完整转换流程及高级技巧,帮助工程师高效完成PCB设计文件转换,提升工作效率。

weixin_30378623的博客 423

用友YonSuite产品实操手把手教学(图文版)

用友YonSuite

ct341688的博客 8169

Oracle package 整理

 package 包是一组相关过程、函数、变量、常量#SinaEditor_Temp_FontName、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。一个包由两个分开的部分组成:   (1)包package声明或定义:包定义部分是创建包的规范说明,声明包内数据类型、变量、常量、游标等元素。这部分也是为使用者提供了透明

码农的田园 522

华为灵衢UB总线介绍

华为发布"灵衢"(UB)超节点互联协议,旨在构建支持AI大模型计算的基础设施。该协议采用统一内存语义和对等架构,使设备可直接访问远程内存,实现资源池化。技术突破包括2.1微秒超低时延和TB级带宽,支持64节点、52万张昇腾卡的集群互联。相比传统RDMA,"灵衢"更注重系统级资源调度,而非单纯数据传输。华为开放技术规范,推动生态建设,已有厂商开发兼容IP核。"灵衢"可适应x86、RISC-V等架构,未来将扩展至百万卡规模集群。

技术引领业务创新 4426

学习Oracle数据库的存储过程包

在数据库中,如果有多个存储过程,并且这些存储过程归属于同一业务域的话,可以将这些存储过程放到存储过程包中。 在数据库中,使用存储过程包时,需要先在中声明存储过程,然后在中编写存储过程的具体逻辑内容。 在存储过程包中,类似于中的接口,类似于对接口的实现类。...

Levi_moon的博客 2153

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1005

【PyTorch版本兼容性指南】如何在不同版本中正确使用torch.nn.attention

本文详细解析了PyTorch版本兼容性问题,特别是torch.nn.attention模块在不同版本中的使用差异。针对常见的ModuleNotFoundError错误,提供了三种实用解决方案:升级PyTorch版本、使用自定义实现和源码移植方案,并分享了最佳实践建议,帮助开发者有效避免兼容性问题。

weixin_29084231的博客 472

oracle package 和package body

ORACLE中的function 、package、package bodies、procedure的区别和相同: function有返回值,有参数; procedure无返回值,有参数; package、package body是同时存在的,就像.h和.cpp文件,如果要外部调用的,就在package里声明一下,包内调用的,只要在body里写就行了。 创建package create or replace package cus_csh_payment_wfl_pkg is ...

kevin_cat的博客 897

GEE案例教程:融合Sentinel-1 SAR数据、Sentinel-2光学影像和WorldPop人口数据,构建完整的洪水监测与影响评估工作流

本文介绍了一个专为巴基斯坦哈扎拉分区设计的洪水监测系统,该系统整合了Sentinel-1 SAR数据、Sentinel-2光学影像和WorldPop人口数据等多源遥感数据。系统通过VV极化SAR数据的水体提取算法(阈值-13dB)实现洪水范围监测,结合10米分辨率的光学影像进行可视化验证,并利用100米分辨率人口数据评估受灾人口。系统提供完整的技术实现,包括研究区加载、遥感数据处理、日期选择界面和洪水变化检测等功能模块,为灾害应急响应提供科学依据。

此星光明博客 191

oracle package 备份,ORACLE PACKAGE 包 详解

原文:http://blog.sina.com.cn/s/blog_7ed5a80801011p9f.html包是一组相关过程、函数、变量、常量#SinaEditor_Temp_FontName、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。一个包由两个分开的部分组成:(1)包package声明或定义:包定义部分是创建包的规范说明,声...

weixin_39870413的博客 962

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Oracle package 包详解

包是一组相关过程、函数、变量、常量#SinaEditor_Temp_FontName、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。一个包由两个分开的部分组成: (1)包package声明或定义:包定义部分是创建包的规范说明,声明包内数据类型、变量、常量、游标等元素。 这部分也是为使用者提供了透明的

好男儿今生不后悔 1340

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ORACLE PACKAGE 包 详解

包是一组相关过程、函数、变量、常量#SinaEditor_Temp_FontName、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。一个包由两个分开的部分组成: (1)包package声明或定义:包定义部分是创建包的规范说明,声明包内数据类型、变量、常量、游标等元素。 这部分也是为使用者提供了透明的

zG--Memory-- 1189

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Oracle 包(Package)的使用及背景详解

Oracle包(Package)是封装相关数据库对象的有效方式,由包头(定义公共接口)和包体(实现细节)组成。包体提供四大优势:1)实现信息隐藏,保护内部逻辑;2)支持初始化代码自动执行;3)提升代码模块化和可维护性;4)通过内存缓存提高性能。示例展示了员工薪资管理包的实现,包含薪资查询、奖金计算和转账功能,演示了如何通过私有变量/函数隐藏业务规则,利用初始化块重置计数器,以及保持会话状态。这种封装方式既保护了敏感逻辑,又优化了性能和维护性。

Aries·Zhao 1327

oracle批量赋权package,ORACLE PACKAGE 包 详解

包是一组相关过程、函数、变量、常量#SinaEditor_Temp_FontName、类型和游标等PL/SQL程序设计元素的组合。包具有面向对象设计的特点,是对这些PL/SQL程序设计元素的封装。一个包由两个分开的部分组成:(1)包package声明或定义:包定义部分是创建包的规范说明,声明包内数据类型、变量、常量、游标等元素。这部分也是为使用者提供了透明的接口。(2)包体packpage bod...

weixin_35810956的博客 1253

Oracle中包(PACKAGE)的使用方法

1、定义 包:(1)被组合在一起的相关对象的集合,当包中任何函数或存储过程被调用,包就被加载入内存。 (2)包中的任何函数或存储过程的子程序访问速度将大大加快。 (3)包由两个部分组成:包头和包体,在包头中描述变量、常量、游标、和子程序。 (4)包体由完整的子程序,游标定义组成。 2、创建包 包头: CREATE OR REPLACE PACKAGE te

casellee的博客 1万+

oracle 包 (package)

/* oracle 包 (package)*//*  包用于逻辑组合相关的pl/sql类型,项和子程序,由包规范 和 包体组成  实际上包是用于与应用程序的接口。  《1》包的例子    1.创建包类型    create or replace package emp_package is    g_deptno number(3) := 30;    procdu

oypj2010的专栏 921

Oracle进阶(六)包(Package)和包体

包(Package)是用来存储相关程序结构的对象,它存储于数据字典中。包由两部分组成:包规范(PACKAGE)和包体(PACKAGE BODY)。 包规范是包的说明部分,是对外的操作接口(类似java接口),对应用是可见的。 包体是包的代码和实现部分(类似java实现类),对应用来说是不可见的。

一二山人的博客 7919

oracle包定义,oracle中包的定义及使用

包的作用:包可以将任何出现在块声明的语句(过程,函数,游标,游标,类型,变量)放于包中,相当于一个容器.将声明语句放入包中的好处是:用户可以从其他PL/SQL块中对其进行引用,因此包为PL/SQL提供了全程变量.包分为两部分:包头和包体.如何创建包?1)包头:语法格式:CREATE OR REPLACE PACKAGE package_name /*包头名称*/IS|AS pl/sql_packa...

weixin_28877739的博客 633

包的设计oracle,Oracle专题15之包

包是一组相关过程、函数、变量、常量和游标等PL/SQL程序设计元素的组合。b、包的特点?它具有面向对象程序设计语言的特点,是对PL/SQL程序设计元素(过程、函数、变量等)的封装。它使程序设计模块化。c、包中的程序元素包中的程序元素分为两种:公用元素(公用组件)、私用元素(私用组件)。e、包的组成一个包由两个分开的部分组成:包规范(包定义):用于定义包的公用组件,包括常量、变量、游标、过程和函数等...

weixin_34582773的博客 245

Oracle数据库的包概念

1.包(package)是oracle数据库的对象。利用包可以将一组逻辑相关的PL/SQL类型,数据项和子程序组织在一起。一个包可以包含某些子程序,类型定义和变量的说明等。2.当一个包建立(编译)后,它就被存储在数据库中。包如同一个子程序库一样,用户可以调用包里的子程序,还可使用包中的变量,类型和例外等。3.包由两部分组成:包规范和包体。包规范是一个包对外的界面和接口。 在包规范部分,可以

尚阳的专栏 5476

Oracle 存储过程包(Package、Package Body)

初出茅庐,不知原来存储过程还可以写得如此复杂,而且还竟然可以调试! 好吧,得整理一下存储过程的一些语法,以备以后用到时可以查阅。 使用数据库:Oracle 数据库工具:PL/SQL Developer 在Oracle中使用存储过程可以声明单个存储过程,也可以使用包的方式一个存储过程包(PACKAGE)包含许多存储过程。 编写单个存储过程的格式可以参考下面这个例子,这是最简单的存储过程例子: 1 2 3 4 5 6 7 8 9

随风而逝的博客 3474
上一篇: Java里的堆(heap)栈(stack)和方法区(method)
下一篇: Spring及其优点
CZ__
博客等级 码龄9年 97粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值