包(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的更多相关文章

  1. Oracle 包(Package)

    引用这位大大的: http://www.cnblogs.com/lovemoon714/archive/2012/02/29/2373695.html 1.为什么要使用包?       答:在一个大型 ...

  2. oracle包详解(二)【weber出品】

    一.重载子程序 PL/SQL中的重载功能: 1. 能够使用户创建两个或多个同名的子程序 2. 要求子程序的形式参数的数量,顺序或者数据类型不一样 3. 能够使用户使用不同的数据灵活的调用子程序 4. ...

  3. Oracle包的概念

    转自:http://www.cnblogs.com/lovemoon714/archive/2012/02/29/2373695.html 1.为什么要使用包?       答: 在一个大型项目中,可 ...

  4. oracle 包,函数,过程,块的创建和执行及在java中执行(转)

    SQL> create or replace procedure sp_guocheng1 is--如果有这个名字就替换  2  begin--执行部分  3  insert into guoc ...

  5. Oracle包和包体

    一.什么要使用包? 在一个大型项目中,可能有很多模块,而每个模块又有自己的过程.函数等.而这些过程.函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起 的,即Procedures中),这些 ...

  6. (转)Oracle 包(Package)

    本文转载自:http://www.cnblogs.com/lovemoon714/archive/2012/02/29/2373695.html 1.为什么要使用包?       答:在一个大型项目中 ...

  7. Oracle 包的学习

    (1)包是一种数据库对象,相当于一个容器.将逻辑上相关的过程.函数.变量.常量和游标组合成一个更大的单位.用户可以从其他 PL/SQL 块中对其进行引用 (2)包类似于C++和JAVA语言中的类,其中 ...

  8. maven本地添加Oracle包

    因为版权原因,Java后台连接数据库的ojdbc包并不可以用maven直接从网上下载导入,所以需要我们手动将其资源放在本地.下面是步骤: 1.找到Oracle ojdbc6包,拷贝到某备份目录2.包目 ...

  9. ORACLE 包[转]

    包的作用: 包可以将任何出现在块声明的语句 ( 过程 , 函数 , 游标 , 游标 , 类型 , 变量 ) 放于包中 , 相当于一个容器 .使用包的好处不仅仅是程序的分组管理,还可以使用包中的程序重载 ...

  10. oracle包概述(一)【weber出品】

    一.PL/SQL包概述 1. 什么是PL/SQL包: 相关组件的组合:PL/SQL类型.变量,数据结构,和表达式.子程序: 过程和函数 2. 包的组成部分: 由两部分组成: 包头 包体 3. 包的优点 ...

随机推荐

  1. Sharepoint 2010、Sharepoint 2013浏览器打开CAD(.dwg)

    客户端配置 1.安装FreeDWGViewer.exe,设置浏览器查看 2.检查ActiveX插件是否已安装成功 服务端配置 1.开启许可模式或者通过脚本将"application/acad ...

  2. HTML5-电影影评网

    学习完了HTML5的新标签,然后结合之前的案例做了第一个小案例.自我感觉良好.下面我来展示一下图片 这是我浏览其他网站的时候以为发现的新功能可以运行代码,这是运行之后截得图片.自我感觉照片还是蛮高大上 ...

  3. Service是什么?Service又不是什么?

    在Android王国中,Service是一个劳动模范,总是默默的在后台运行,无怨无悔,且总是干最脏最累的活,比如下载文件,倾听音乐,网络操作等这些耗时的操作,所以我们请尊重的叫他一声:"劳模 ...

  4. Ionic设置ion-slide-box不启用(不通过$ionicSlideBoxDelegate)

    猛地一看这个标题,可能觉得多此一举,直接$ionicSlideBoxDelegate. $getByHandle(handle). enableSlide(false)设置不就行了?是的,按理说就是这 ...

  5. 脱离spring集成cxf(基于nutz框架)

    什么是webService WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 理论资料: http://blog.csdn.net/wooshn/article/details/8 ...

  6. Linux下Session丢失原因

    最近碰到一个问题,把代码迁移到linux系统下,重新搭建php环境,运行代码, 在登录页面时,不能访问后台,会返回到登录页面,对代码测试,没有报任何错误, 最后检查到是跳转时,session丢失的问题 ...

  7. PostgreSQL-PL/pgSQL-cursor,loop

    将spam_keyword表word字段的字符全部拆分,只是利用过程语言完成循环的操作而已. create or replace function proc1() returns setof text ...

  8. 记一次简单的SQL优化

    原来的sql是这样写的 SELECT d.ONSALE_BARCODE, d.ONSALE_NAME, c.ONSALE_ID, CAST( , ) ) AS CUSTOMARY_PRICE, CAS ...

  9. [iOS]技巧集锦:UITableView自定义Cell中的控件无法完全对齐Cell的左边界和右边界

    这是个很诡异的问题,由于一些特殊需求,我的TableView的Cell的背景色是透明,其中的控件会有背景色,第一个控件和最后一个控件我都用IB自动设了约束,对齐Cell的左边界和右边界,但是自动约束很 ...

  10. windows系统下fis3安装教程

    注意:在安装fis3前必须安装node和npm,详情请见官网http://nodejs.org node版本要求 0.8.x,0.10.x, 0.12.x,4.x,6.x,不在此列表中的版本不予支持. ...