PLSQL Package包的使用

创建包头

create or replace package pak_kingsql is

procedure pro_kingsql(p_one in varchar2,p_two out varchar2,p_three in out varchar2);

function f_nianxin(v_sal in emp.sal%type)return number;

end;

/

创建包体

create or replace package body pak_kingsql is

procedure pro_kingsql(p_one in varchar2,p_two out varchar2,p_three in out varchar2)

is

begin

dbms_output.put_line(‘parameter: ‘||‘p_one: ‘||p_one||‘,p_two: ‘||p_two||‘,p_three:‘||p_three);

end pro_kingsql;

function f_nianxin

(v_sal in emp.sal%type)

return number

is

v_sal2 emp.sal%type:=0;

begin

v_sal2:=v_sal*12;

return v_sal2;

end f_nianxin;

end pak_kingsql;

/

调用包的过程

[email protected] > declare

2  TWO varchar2(20):=‘hehe‘;

3  THREE varchar2(20):=‘haha‘;

4  begin

5  pak_kingsql.pro_kingsql(‘kingsql‘,TWO,THREE);

6  end;

7  /

PL/SQL procedure successfully completed.

[email protected] > set serveroutput on

[email protected] > /

parameter: p_one: kingsql,p_two: ,p_three:haha

PL/SQL procedure successfully completed.

调用包的函数

select pak_kingsql.f_nianxin(sal) from emp;

PAK_KINGSQL.F_NIANXIN(SAL)

--------------------------

9600

19200

15000

35700

15000

34200

29400

36000

60000

18000

13200

PAK_KINGSQL.F_NIANXIN(SAL)

--------------------------

11400

36000

15600

删除包

DROP PACKAGE package_name;

DROP PACKAGE BODY package_name;

创建一个包 把之前的工资等级过程和函数放进去

包头

create or replace package pak_sal is

procedure pro_emp_02(v_eno emp.empno%type);

function f_grade(v_eno in emp.empno%type)

return varchar2;

end;

/

包体

create or replace package body pak_sal is

procedure pro_emp_02(v_eno emp.empno%type)

is

v_ename emp.ename%type;

v_sal emp.sal%type;

begin

select ename,sal into v_ename,v_sal from emp where empno=v_eno;

case

when v_sal between 0 and 2000 then

dbms_output.put_line(v_ename||‘‘‘s salary is‘||v_sal||‘little case‘);

when v_sal between 2001 and 5000 then

dbms_output.put_line(v_ename||‘‘‘s salary is‘||v_sal||‘medium case‘);

when v_sal>5000 then

dbms_output.put_line(v_ename||‘‘‘s salary is‘||v_sal||‘funny‘);

else

dbms_output.put_line(v_ename||‘‘‘s salary is‘||v_sal||‘not funny‘);

end case;

end pro_emp_02;

function f_grade(v_eno in emp.empno%type)

return varchar2

is

v_sal emp.sal%type;

v_result varchar2(50);

begin

select sal into v_sal from emp where empno=v_eno;

case

when v_sal>1 and v_sal<2000 then

v_result:=‘little case‘;

when v_sal>2000 and v_sal<5000 then

v_result:=‘medium case‘;

when v_sal>5000 then

v_result:=‘big case‘;

else

v_result:=‘no case‘;

end case;

return v_result;

end f_grade;

end pak_sal;

/

原文地址:https://www.cnblogs.com/kawashibara/p/9047456.html

时间: 2024-08-30 03:56:01

PLSQL Package包的使用的相关文章

PLSQL Package dubug方法

初步接触EBS代码修改,花了几个小时搞明白了Package的debug方法, 1.打开需要测试的package,找到需要测试的过程,右键选择测试 2.在测试窗口中初始化过程的入参,点击测试按钮开始调试, 本文展现了如何初始化表类型数据的入参,首先创建了一个测试表cux_soa_customer_test,然后录入数据,使用 SELECT * BULK COLLECT INTO custom_info_rec from cux_soa_customer_test; 对参数进行初始化. 可根据不同类

JavaSE入门学习17:Java面向对象之package(包)

一Java包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用: A把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. B如同文件夹一样,包也采用了树形目录的存储方式.同一个包中的类名字是不同的,不同的包中的类的名字是 可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别.因此,包可以避免名字冲突. C包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类. Java使用包(package)这种机制是为了防止命名冲突

批量修改Java类文件中引入的package包路径

http://libeey.blogbus.com/logs/101848958.html当复制其他工程中的包到新工程的目录中时,由于包路径不同,出现红叉,下面的类要一个一个修改包路径,类文件太多的话就比较麻烦了,如何批量改变包路径解决这个问题? 方法一: Ctrl+h >> file serach >> 输入原包名(类型为*.java)>>Replace>>找到后输入要替换的包名 然后自己选择是全部替换还是部分替换. 方法二: 直接修改出错的类所在的包的名

Java学习笔记——位运算符、方法、package包、键盘输入

位运算符: a>>b = a左移b位 = a*2^2 右移舍去低位 方法: method,function,与c函数类似 package包: 通常第一句 写域名倒着写 package --; 主要包: java.lang 核心类string.math.Integer.System.Thread等 java.awt 构建管理GUI java.net 网络相关 java.io 输入输出 java.util 定义系统特性.使用与日期日历相关的函数 (详见api) 键盘输入: 使用别的包的类需要imp

为什么default package包里面的方法不能被其他包调用

为什么defalut package 包里面的方法不能被其他包调用呢? 原因是defalut是默认的意思: default package是缺省包.也就是defalut package 是没有名字的包.其它的包如果要调用缺省包中的类,必须插入包名.但是缺省包却无名,所以不能够直接调用! 原文地址:https://www.cnblogs.com/ccq-190203/p/10393541.html

vs2012 提示 未能正确加载 &quot;Visual C++ Language Manager Package&quot; 包 的解决办法

vs2012 提示 未能正确加载 "Visual C++ Language Manager Package" 包 的解决办法 来源 https://www.cnblogs.com/zhangdongsheng/p/5846790.html 1.  点击 vs2012菜单栏 工具-> Visual Studio 命令提示 打开命令窗口 2. 输入命令  "devenv /Setup" 3. 重新打开 vs2012 Windows PowerShell 版权所有

【PLSQL】package包的使用

************************************************************************   ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************ 包package package是一个可以将相关对象存储在一起的PLSQL结构,Package包含两个分量的组成部分:specif

oracle plsql 上对package 包执行重新编译时,超时无响应:(4021)time-out occurred while waiting to lock object

问题处理过程: 开发反应包存在问题, 我一看他们的用户没对应的权限,给赋予了以下权限: GRANT debug any procedure, debug connect session TO CMSOPR; GRANT EXECUTE any procedure TO CMSOPR; 开发进行调试后没执行结果. 于是我想重新编译,先重新编译的包,半天报个响应超时,当时也没想太多,以为有死锁,于是查数据库锁 -没锁. 查数据库审计表: select * from dba_audit_trail w

如何理解和使用Java package包

Java中的一个包就是一个类库单元,包内包含有一组类,它们在单一的名称空间之下被组织在了一起.这个名称空间就是包名.可以使用import关键字来导入一个包.例如使用import java.util.*就可以导入名称空间java.util包里面的所有类.所谓导入这个包里面的所有类,就是在import声明这个包名以后,在接下来的程序中可以直接使用该包中的类.例如: [java] view plain copy import java.util.* public class SingleImport