oracle---包--laobai
包(package)
作用:逻辑对象的一种。对相关存储过程、函数、变量的封装。
a 封装,便于调用 b 统一授权
系统内置包:dbms_output。用于输出。
standard:常用的函数。异常的定义 自定义包:
包头:package。声明公有的函数、存储过程及公有变量。
包体:package body。实现包头声明的函数、存储过程。定义私有变量。
--调用系统的内置包
begin
sys.dbms_output.put_line('111');
sys.dbms_output.put_line(
sys.standard.LTRIM(' bbb ')
);
end; --创建自定义包。四则运算工具包
--创建包头
create or replace package my_math_pack
is
ver varchar2(20):='v0.1版本'; --声明并初始化公有变量
procedure showauthor; --声明1个公有存储过程。显示作者
function add(i number,j number)
return number; --声明1个公有函数。加法运算 function div(i number,j number)
return number; --声明1个公有函数。除法运算。
end; --创建包体
create or replace package body my_math_pack
is
-- 实现1个公有存储过程。显示作者
procedure showauthor
as
begin
dbms_output.put_line('作者:老白');
end; --实现1个公有函数。加法运算
function add(i number,j number)
return number
as
begin
return i+j;
end; --实现1个公有函数。除法运算。
function div(i number,j number)
return number
as
begin
return i/j;
end;
end; --调用自定义包 begin
--调用包里的函数
dbms_output.put_line(system.my_math_pack.add(8,9));
system.my_math_pack.showauthor();
--显示包的公有变量
dbms_output.put_line(system.my_math_pack.ver);
end; --练习
/*
创建自定义包 my_string_pack
包含 2个函数声明 函数1,返回2个字符串中,长度较长的那个
函数2,如果字符串2是字符串1的子串,返回1,否则返回0.
*/ create or replace package my_string_pack
is
function getlonger(str1 varchar2,str2 varchar2)
return varchar2;
function isexists(str1 varchar2,str2 varchar2)
return number;
end; create or replace package body my_string_pack
is
function getlonger(str1 varchar2,str2 varchar2)
return varchar2
as
begin
if (length(str1)>length(str2)) then
return str1;
else
return str2;
end if;
end;
function isexists(str1 varchar2,str2 varchar2)
return number
as
begin
if (instr(str1,str2)>'0') then
return 1;
else
return 0;
end if;
end;
end; begin
dbms_output.put_line(my_string_pack.getlonger('aaa','bbb'));
dbms_output.put_line(my_string_pack.isexists('aaa','bb'));
end; --- 案例2,创建my_emp_pack,对emp表进行如下操作
/*
1 存储过程,输出所有工资大于等于指定工资的员工号,员工姓名及工资
2 函数。获取指定部门号且岗位为"CLERK"的员工的最高工资
*/ --包头
create or replace package my_emp_pack
is procedure show_sal_greater_than(
in_sal number
) ; function get_max_sal(
v_deptno number
)return number;
end; --包体
create or replace package body my_emp_pack
is
procedure show_sal_greater_than(
in_sal number
)
as
--声明1个游标
cursor v_cur
is
select empno,ename,sal from scott.emp where sal>=in_sal;
v_eno scott.emp.empno%type;
v_ename scott.emp.ename%type;
v_sal scott.emp.sal%type;
begin
--打开
if (not v_cur%isopen) then
open v_cur;
end if;
--依次提取
loop
exit when (v_cur%notfound);
fetch v_cur into v_eno,v_ename,v_sal;
dbms_output.put_line('第'||v_cur%rowcount||':'||v_eno
||','||v_ename||','||v_sal);
end loop;
--关闭
close v_cur;
end; function get_max_sal(
v_deptno number
)return number
as
v_max number;
begin
select sal into v_max from scott.emp
where deptno = v_deptno and job='CLERK';
return v_max;
exception
when no_data_found then
dbms_output.put_line('找不到记录');
return -1;
end;
end; begin
--system.my_emp_pack.show_sal_greater_than('15000');
dbms_output.put_line(system.my_emp_pack.get_max_sal('40'));
end;
oracle---包--laobai的更多相关文章
- Oracle 包(Package)
引用这位大大的: http://www.cnblogs.com/lovemoon714/archive/2012/02/29/2373695.html 1.为什么要使用包? 答:在一个大型 ...
- oracle包详解(二)【weber出品】
一.重载子程序 PL/SQL中的重载功能: 1. 能够使用户创建两个或多个同名的子程序 2. 要求子程序的形式参数的数量,顺序或者数据类型不一样 3. 能够使用户使用不同的数据灵活的调用子程序 4. ...
- Oracle包的概念
转自:http://www.cnblogs.com/lovemoon714/archive/2012/02/29/2373695.html 1.为什么要使用包? 答: 在一个大型项目中,可 ...
- oracle 包,函数,过程,块的创建和执行及在java中执行(转)
SQL> create or replace procedure sp_guocheng1 is--如果有这个名字就替换 2 begin--执行部分 3 insert into guoc ...
- Oracle包和包体
一.什么要使用包? 在一个大型项目中,可能有很多模块,而每个模块又有自己的过程.函数等.而这些过程.函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起 的,即Procedures中),这些 ...
- (转)Oracle 包(Package)
本文转载自:http://www.cnblogs.com/lovemoon714/archive/2012/02/29/2373695.html 1.为什么要使用包? 答:在一个大型项目中 ...
- Oracle 包的学习
(1)包是一种数据库对象,相当于一个容器.将逻辑上相关的过程.函数.变量.常量和游标组合成一个更大的单位.用户可以从其他 PL/SQL 块中对其进行引用 (2)包类似于C++和JAVA语言中的类,其中 ...
- maven本地添加Oracle包
因为版权原因,Java后台连接数据库的ojdbc包并不可以用maven直接从网上下载导入,所以需要我们手动将其资源放在本地.下面是步骤: 1.找到Oracle ojdbc6包,拷贝到某备份目录2.包目 ...
- ORACLE 包[转]
包的作用: 包可以将任何出现在块声明的语句 ( 过程 , 函数 , 游标 , 游标 , 类型 , 变量 ) 放于包中 , 相当于一个容器 .使用包的好处不仅仅是程序的分组管理,还可以使用包中的程序重载 ...
- oracle包概述(一)【weber出品】
一.PL/SQL包概述 1. 什么是PL/SQL包: 相关组件的组合:PL/SQL类型.变量,数据结构,和表达式.子程序: 过程和函数 2. 包的组成部分: 由两部分组成: 包头 包体 3. 包的优点 ...
随机推荐
- 关于从Activity A跳转到Activity B ,其中Activity A中有一个VideoView,Activity B中有一个MediaPlayer。
两个不同的视频的跳转, 前面我是在onStop()方法中销毁VideoView(因为MediaPlayer是全局共用的,而VideoView内包含MediaPlayer),但是每次进入Activity ...
- ios App与网页交互
随着移动APP的快速迭代开发趋势,越来越多的APP中嵌入了html网页,但在一些大中型APP中,尤其是电商类APP,html页面已经不仅仅满足展示功能,这时html要求能与原生语言进行交互.相互传值. ...
- UI篇(初识君面)
我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...
- OC泛型
OC泛型 泛型是程序设计语言的一种特性,他主要是为了限制类型的,比如OC中的数组,你可以限制他里面装的是NSString类型,泛型的话JAVA和C++都有的,大家要是对泛型不了解的话可以去百度一下. ...
- Storm中遇到的日志多次重写问题(一)
业务描述: 统计从kafka spout中读取的数据条数,以及写入redis的数据的条数,写入hdfs的数据条数,写入kafaka的数据条数.并且每过5秒将数据按照json文件的形式写入日志.其中保存 ...
- MySQL Performance-Schema(三) 实践篇
前一篇文章我们分析了Performance-Schema中每个表的用途,以及主要字段的含义,比较侧重于理论的介绍.这篇文章我主要从DBA的角度出发,详细介绍如何通过Performance-Schema ...
- Elasticsearch 调优 (官方文档How To)
How To Elasticsearch默认是提供了一个非常简单的即开即用体验.用户无需修改什么配置就可以直接使用全文检索.结果高亮.聚合.索引功能. 但是想在项目中使用高性能的Elasticsear ...
- Linux初识二
1. Linux上常用的文件管理命令及使用 (1) CP命令:复制文件或文件夹语法格式 cp [OPTION]... [-T] SOURCE DEST // 单源复制 cp [OPTION]... S ...
- 【JS/CSS3】实现带预览图幻灯片效果~
一.前期准备 1.1 案例分析 适用场景:单例布局1.2 方法论 V视图 HTML+CSS+调试C js实现控制流程D数据 优化扩展 二.代码 结构 <div class="slide ...
- Boolean()值为false的五个特殊值
在if.while等需要判断条件时,会调用函数Boolean()对判断条件进行隐式转换,而只有五个特殊值才会返回false 这五个值是:undefined, null, "", 0 ...