图解Oracle包实例
以下使用SQL Developer,使用Oracle SCOTT账号自带emp表,创建包。
1 在包中定义record类型,并在匿名块中调用
--在包中自定义类型
create or replace package my_bao
as
type emp_type is record(
gh emp.empno%type,
xm emp.ename%type,
gz emp.sal%type
);
end;
创建之后刷新一下,左侧视图 程序包 下出来所创建内容;
2 调用,
declare
v1 my_bao.emp_type;
begin
select empno,ename,sal into v1 from emp where empno=7900;
dbms_output.put_line('工号='||v1.gh);
dbms_output.put_line('姓名='||v1.xm);
dbms_output.put_line('工资='||v1.gz);
end;
结果如下图;
如果DBMS输出中没有内容,点击上图中最右侧的像书的页的那个小图标,打开DBMS输出;
3 在包中定义过程hello和函数f_add(p1,p2)
--定义包规范
create or replace package my_bao2
as
type emp_type is record(
gh emp.empno%type,
xm emp.ename%type,
gz emp.sal%type
);
procedure hello(p_name varchar2);
function f_add(p1 number,p2 number) return number;
end;
4 实现包规范,即包体(package body)
create or replace package body my_bao2
as
type emp_type is record(
gh emp.empno%type,
xm emp.ename%type,
gz emp.sal%type
);
procedure hello(p_name varchar2)
as
begin
dbms_output.put_line('hello,'||p_name);
end;
function f_add(p1 number,p2 number) return number
as
v1 number;
begin
v1:=p1+p2;
return v1;
end;
end;
5 调用
select my_bao2.f_add(1,2) from dual;
6 调用
call my_bao2.hello('oracle');
7 包中重载方法
重载的要点就是名称一样,而参数的类型或者个数不同。
定义代码:
create or replace package my_bao3
as
function f_add(p1 number,p2 number) return number;
function f_add(p1 varchar,p2 varchar) return number;
end;
包体:
create or replace
package body my_bao3
as
function f_add(p1 number,p2 number) return number
as
v1 number;
begin
v1:=p1+p2;
return v1;
end;
ction f_add(p1 varchar,p2 varchar) return number
as
v1 number;
begin
v1:=p1+p2;
return v1;
end;
end;
8 调用
select my_bao3.f_add(1,2) from dual;
9 调用
select my_bao3.f_add('6','2') from dual;
oracle会根据参数类型自动选择调用哪个函数;
图解Oracle包实例相关推荐
- oracle包写入程序失败_Oracle内核技术揭秘第一篇
蒋蒋~~大家吼啊,又是我,智商233的天才少呂,今天给大家带来的是数据库内核的介绍,包括实例,数据库本身的一些进程 Oracle Database,又名Oracle RDBMS,或简称Oracle是目 ...
- Oracle数据库实例之进程架构(二)
Oracle数据库实例之进程架构(二) 必需的后台进程 PMON PMAN LREG SMON DBW LGWR CKPT MMON & MMNL RECO 可选的后台进程 ARCn CJQ0 ...
- Oracle数据库实例之内存架构(一)
Oracle数据库实例之内存架构(一) Oracle数据库内存结构 基本内存结构 Oracle内存管理 用户全局区:UGA 程序全局区:PGA PGA的内容 专用和共享服务器模式下的PGA 系统全局区 ...
- Linux无界面新建Oracle数据库实例
Linux无界面新建Oracle数据库实例 根据https://blog.csdn.net/qq_24058757/article/details/88220437 步骤操作后总结整理的自己的新建实例 ...
- oracle 包 被锁,Oracle包被锁定的原因分析及解决方案
Oracle包被锁定的原因分析及解决方案 在数据库的开发过程中,经常碰到包.存储过程.函数无法编译或编译时会导致PL/SQL 无法响应的问题.碰到这种问题,基本上都要重启数据库解决,严重浪费开发时间. ...
- Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档)
实验:Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档) 步骤1:Oracle单实例搭建 1. 系统环境检查 2. 创建用户.组,配置环境变量.安装目录 3. 安装Orac ...
- windows下一个,OracleServiceXXX和Oracle 关系实例
其实,windows下的oracle,在oracle实例启动时,是全然依赖于 window服务中的OracleServiceXXX .这个XXX就是oracle的实例名(注意啊,不是数据库名称,而是实 ...
- 2. Oracle 数据库实例启动关闭过程
转载自: http://blog.csdn.net/leshami/article/details/5542983 Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行 ...
- [na]tcpdump非常实用的抓包实例
基本语法篇 常用应用:过滤物理口过滤某个port/ip/mac过滤协议显示ip/mac/port不解析等 过滤mac tcpdump -i eth0 ether host 24:DF:6A:F4:59 ...
最新文章
- 在Ubuntu 14.04 64bit上安装python-pyqt5软件包(python 2.7)
- Android CoordinatorLayout使用
- 撩课-Web大前端每天5道面试题-Day7
- VMplay CEO 艾奇伟:借鉴Docker思路 像投影仪一样将App投到云端
- K8s 文档增加反种族歧视声明 | 云原生生态周报 Vol. 54
- S3C6410 裸机硬件JPEG解码(转)
- 将VS2010的工程转换为VS2005,即用VS2005打开
- Halcon视觉框架+车牌识别+汉字识别+颜色识别+20200930
- OpenKG 祝大家 2021 新年快乐 —「2020 精选文章汇编」
- MathType求和符号中的黑三角该如何消除
- easyExcel导出下拉选择框,多sheet数据excle导入导出
- 360手机怎样更新系统版本android,360手机N5迎来安卓7.0稳定版升级
- 如何在Kubernetes中部署nginx
- AD与DNS集成,且有备份AD与DNS,主AD与DNS坏,备份DNS如何成为主
- 【MySQL】查看支持的字符集show character set;
- 罗技k380连接双系统(win10和ubuntu18)
- getInputStream() has already been called for this request
- 第4章 商业蜂窝通信系统的典范-GSM
- WordPress的最佳学习管理系统插件
- 机器学习-Logistic Regression(逻辑回归)原理
热门文章
- Examine Scheduling Policies
- jQuery 元素操作——遍历元素
- 理解java并发工具Phaser
- 全套CRC校验的算法
- pytorch tensor查找0_在PyTorch中Tensor的查找和筛选例子
- mesh三维画图[matlab]
- mysql innodb count_MySQL下INNODB引擎的SELECT COUNT(*)性能优化及思考
- 怎么把本地的项目同时提交到两个仓库
- webpack4.0 babel配置遇到的问题
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证