包(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. 【搬砖】安卓入门(3)- Java开发编程基础--循环控制语句

    04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } 复制代码 B:循环结构for语句的 ...

  2. Andriod 自定义控件之音频条

    今天我们实现一个直接继承于View的全新控件.大家都知道音乐播放器吧,在点击一首歌进行播放时,通常会有一块区域用于显示音频条,我们今天就来学习下,播放器音频条的实现. 首先我们还是先定义一个类,直接继 ...

  3. C++实现DNS域名解析

    一.概述 现在来搞定DNS域名解析,其实这是前面一篇文章C++实现Ping里面的遗留问题,要干的活是ping的过程中画红线的部分: cmd下域名解析的命令是nslookup,比如“nslookup w ...

  4. Android开发案例 - 自定义虚拟键盘

    所有包含IM功能的App(如微信, 微博, QQ, 支付宝等)都提供了Emoji表情之类的虚拟键盘,  如下图:    本文只着重介绍如何实现输入法键盘和自定义虚拟键盘的流畅切换, 而不介绍如何实现虚 ...

  5. JAVA并发编程J.U.C学习总结

    前言 学习了一段时间J.U.C,打算做个小结,个人感觉总结还是非常重要,要不然总感觉知识点零零散散的. 有错误也欢迎指正,大家共同进步: 另外,转载请注明链接,写篇文章不容易啊,http://www. ...

  6. LAMP坏境和LNMP环境安装Nagios4.1.1和基本配置

    ----------------------------------------以下内容为笔者生产环境的监控,安装都是经过一步步测试的-------------------------------- ...

  7. 安装phpstudy之后发现80端口被占用

    安装phpstudy之后发现80端口被占用: 进入cmd的界面,在输入"netstat -ano",按回车键后,会显示当前电脑中程序占用的端口和程序ID等等信息:看到第一条就是:0 ...

  8. 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)

    前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...

  9. windows10下sql server 2005 无法运行或sql server服务无法启动的完美解决方案

    问题:升级windows10后,sql server 2005 无法运行或sql server服务&sql server agent无法启动,如下图,怎么办? 一般情况下,我们第一反应就是sq ...

  10. monkey之monkey命令详解

    四大类-- 常用选项.事件选项.约束选项.调试选项 1.常用选项 --help:打印帮助信息 -v:指定打印信息的详细级别,一个-v增加一个级别 ,默认级别为 0 .用于指定反馈信息级别(信息级别就是 ...