存储包的语法
●包规格部
CREATE OR REPLACE PACKAGE 包名 { AS | IS }
存储过程定义;
存储函数定义;
变量定义;
数据类型定义;
异常定义;
游标定义;
END [ 包名 ];
●包本体
CREATE OR REPLACE PACKAGE BODY 包名 { AS | IS }
针对包规格部の存储过程定义的程序;
针对包规格部の存储函数定义的程序;
只能在包本体内部调用的存储过程程序;
只能在包本体内部调用的存储函数程序;
END [包名];
存储包由包规格部和包本体两部分构成。
●包规格部
定义可以从包外部或包全局访问的存储过程、存储函数、变量、异常、数据类型、游标。
只对存储过程、存储函数的接口进行定义,而在包本体中才对存储过程、存储函数进行具体实现。
●包本体
针对包规格部中定义的存储过程、存储函数进行具体实现。
或者编写只能在包本体内部访问的存储过程、存储函数。
示例1)包规格部的定义
create or replace package dept_utl as
-- 函数 get_dept_name 的定义
function get_dept_name(v_dept_id in char) return varchar2;
-- 过程 insert_dept的定义
procedure insert_dept(v_dept_id in char,v_dept_name in varchar2);
-- 异常 e_deptNotFound 的定义
e_deptNotFound exception;
end dept_utl;
示例2)包本体的定义
create or replace package body dept_utl as
-- 函数 get_dept_name 的本体
function get_dept_name(v_dept_id in char) return varchar2 as
v_dept_name varchar2(10);
begin
select dept_name into v_dept_name from dept
where dept_id = v_dept_id;
if sql%notfound then
raise e_deptNotFound;
end if;
return v_dept_name;
end get_dept_name;
-- 过程 insert_dept 的本体
procedure insert_dept(v_dept_id in char,v_dept_name in varchar2) as
begin
insert into dept values(v_dept_id,v_dept_name);
commit;
end insert_dept;
end dept_utl;
示例3)从SQL中调用上述包的函数[get_dept_name]
SQL> select dept_utl.get_dept_name('D01') from dual;
DEPT_UTL.GET_DEPT_NAME('D01')
-----------------------------------------------------------------------
总务
SQL>
示例4)从匿名块中执行上述包中的存储过程。
declare
begin
dept_utl.insert_dept('D04','营业');
end;
→
匿名块
→
存储过程(PROCEDURE)
→
存储函数(FUNCTION)
→
存储包(PACKAGE)
→
触发器(TRIGGER)
→
PL/SQL的数据类型
→
PL/SQL的运算符(计算、赋值、结合、连结、指数、比较)
→
PL/SQL的变量和常量
→
%TYPE属性和%ROWTYPE属性
→
PL/SQL的内置函数
→
PL/SQL的执行权限(AUTHID)
→
以独立事务执行PL/SQL
→PL/SQL
→首页
分享到:
相关推荐
1、首先在ORACLE里建立如下PACKAGE PACKAGE分SPEC和body两部分 2、C#部分代码
直接导入Unity 工程就可以查看了 里面包含了示例场景以及代码
npm-package-template 这是用于开发npm包的模板存储库如何发展# # install dependency> yarn# # test> yarn test# # test with coverage> yarn test:coverage
或使用 ZIP 下载存储库: $ curl -LO https://github.com/remarkablemark/npm-package-template/archive/master.zip $ unzip master.zip $ rm master.zip $ cd npm-package-template 用法 重命名包(使用检查名称...
Lerna 是一个优化使用 git 和 npm 管理多包存储库的工作流工具,用于管理具有多个包的 JavaScript 项目。Lerna 仓库是什么样子?您有一个如下所示的文件系统:my-lerna-repo/ package.json packages/ ...
2. 包采用树形目录的存储方式,使得包之间产生了关系,方便维护、管理。 3. 包可以起到访问控制的作用,用于限定访问范围。 4. 包可以防止命名冲突,即不同包下的类可以使用相同的类名。 Java包的定义 在Java中,...
这是通过程序包注册表服务提供的程序包的存储库。 有关基本注册表API的用法和示例,请参见。 package-storage库包含3个分支,其中包含针对不同环境的软件包: 快照 分期 生产 这些分支与存储库和程序包其他方面的...
Scene Creator 场景创建器Unity开发插件包 支持Unity版本2019.4.28及以上 描述 Scene Creator 是一款方便易用的编辑器工具,旨在简化创建新场景的过程。使用场景创建器,您可以选择模板场景,定义一个目录来存储场景...
为了创建这个存储库,我已经分叉了这个项目并进行了一些编辑: 感谢作者 您可以检索的信息是: 包裹名字包版本包装说明包许可证包主页包作者名(从2.1.0版本开始,“作者名”可以是对包有贡献的维护者列表,如果在包...
oralce存储过程包跨用户访问表的实战方案,本人亲测~~~
python包 用于构建python软件包并发布到pypi的模板存储库。 指示 重命名package/ 更新setup.py from setuptools import setup , find_packages from package import __version__ # rename package here long_...
它显示了构建时包含的资产以及每个资产占用的存储空间。 DLL列表:确切了解构建中包含的Mono DLL以及它们占用的空间大小。 未使用的资产列表:也许你有不再使用的文件? 使用“未使用的资产列表”查看构建中未...
ARChon-打包机在 Google Play 上可用: : XDA 线程: : ARChon Packager(以前称为 Chrome APK Packager)是一种直接从手机生成 Chrome ARChon 自定义运行时包的便捷方式。 您可以从手机存储上的 APK 或手机上安装的...
有时,您创建一个存储库,该存储库生成项目的打包版本,并且希望该存储库拥有自己的package.json文件,但从原始项目继承的名称和版本相同。 安装 如果要全局安装package-json-from-template,请在终端上使用以下命令...
SBT本机打包程序允许您以本机格式构建应用程序包。 它为常见配置(例如简单的Java应用程序或服务器应用程序)提供了不同的原型。 问题/讨论 讨论/问题:如果您想提出有关本机打包程序的问题,我们在上很活跃。 您...
1.3 包(package) 7 1.3.1 包的基本结构 7 1.3.2 包的创建 7 1.3.3 调用包中元素 9 1.3.4 包的修改和删除 9 第二章 oracle存储过程基础――PL/SQL 9 2.1 pl/sql基础 9 2.1.1 PL/SQL简介 9 2.1.2 一个简单的PL/SQL块 ...
Android重命名介绍这是一个CLI工具,用于使用代码重命名android应用程序包名称。安装NPM Android-Rename-Package基于nodejs。 您可以在使用它之前安装node.js。 然后安装此工具。 npm -g install android-rename吉特...
php-包模板安装 :light_bulb: 这是展示如何安装软件包的好地方,见下文: 跑步$ composer require ergebnis/php-package-template用法 :light_bulb: 这是展示一些使用示例的好地方!变更日志请查看 。贡献请查看 。...
这些示例旨在介绍Inxton.Package.Vortex.Core的用法和功能,这是一组基本但功能强大的工具,可让您与.NET中的Beckhoff TwinCAT3 PLC数据(例如C#,VB等)进行交互。快速和可扩展的方式。该程序包是Inxton.Vortex....