在Oracle中通过使用子程序和包将PL/SQL代码封装起来,从而实现模块化,在以后的调用中可以多次复用,而不受前台语言的限制,同时通过用子程序和包将PL/SQL代码封装起来,有利于提高开发效率和执行效率,但是维护性却没有面向对象灵活,如果一个子程序受到影响,就需要修改该子程序的定义。
在Oracle中子程序分为过程和函数,过程适用的场合是处理需要修改数据的业务,如有insert、delete、update、commit、rollback和有异常的地方;而函数适合于处理只是计算,而不必改变数据的场合,它通过返回值返回计算结果,它可以直接用在sql语句和jdbc中。过程的定义方法如下:
create or replace procedure add_emp(
p_ename emp.ename%type,
p_sal emp.sal%type,
p_hiredate varchar2, --不能写长度
p_empno out emp.empno%type
)
as
begin
insert into emp(empno,ename,sal,hiredate)
values(seq1.nextval,p_ename,p_sal,to_date(p_hiredate,'yyyy-mm-dd'))
returning empno into p_empno;
commit;
end;
而调用方式与使用jdbc基本相同,不同点就是
String sql = "{ call del_emp(?) }";
CallableStatement call =conn.prepareCall(sql);
方式调用函数。
函数创建方式:
create or replace function add_sal(
p_sal1 number,
p_sal2 number)
return number
as
v_sal emp.sal%type;
begin
v_sal:=p_sal1+p_sal2;
return v_sal;
end;
在Oracle中包适用于当过程和函数需要分类管理时使用,不同的包相当于不同的容器,先定义包规范,然后再包中实现包规范,包的定义方法如下:
--定义包规范
create or replace package mybao
is
procedure hello(v1 varchar2);
function double_num(v1 number)returnnumber;
end;
--然后在包体中实现
create or replace package body mybao
is
procedure hello(v1 varchar2)
as
begin
dbms_output.put_line('hello');
end;
function double_num(v1 number)returnnumber
as
begin
returnv1*2;
end;
end;
分享到:
相关推荐
oracle数据库中的子程序和包的简单用法,适用于刚入门的菜鸟学习
Oracle_plsql讲义:第22章 创建子程序和包.ppt
Oracle_plsql讲义:第23章 使用子程序和包.ppt
Oracle SQL&PLSQL课件:第22章 创建子程序和包.ppt
共分为7部分(7个pdf文档): 第一部分:PL/SQL介绍及开发环境 1.PL/SQL介绍 2.PL/SQL开发和运行环境 3.跟踪和调试 ...4.创建子程序和包 5.使用子程序和包 6.数据库触发器 7.数据库作业和文件输入输出
Oracle Database 11g 标准课程第十一章 开发子程序和包过程-1
PL/SQL简介(第1~2章) PL/SQL中的SQL语句(第3章) 控制结构(第4~7章) 异常处理(第8~10章) 游标(第11~12章) ...子程序和包(第19~22章) Oracle中对象类型(第23章) Oracle提供的包(第24章)
删除“开始”/“程序”中所有Oracle的组和图标。 删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents and Settings\系统用户名、LocalSettings\Temp目录下的...
§7.5 子程序重载 13 §7.6 删除过程、函数和包 13 §7.7 包的管理 13 第八章 触发器 13 §8.1 触发器类型 13 §8.1.1 DML触发器 13 §8.1.2 替代触发器 13 §8.1.3 系统触发器 13 §8.2 创建触发器 13 §8.2.1 ...
§17.6 删除过程、函数和包 293 §17.7 包的管理 293 §17.7.1 包有关的数据字典 293 §17.7.2 包中无效对象的查询和编译 294 §17.7.3 包源代码的导出 296 第十八章 触发器 297 §18.1 触发器类型 297 §18.1.1 DML...