13-oracle_数据库存储过程和包的开发
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了13-oracle_数据库存储过程和包的开发,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5675字,纯文字阅读大概需要9分钟。
内容图文
![13-oracle_数据库存储过程和包的开发](/upload/InfoBanner/zyjiaocheng/913/b915fc769d2647be96e48239ddb30754.jpg)
一:存储过程(图片左边的procedure目录):
在数据库的实际开发过程中,我们不可能每个脚本用人工的方式执行,需要自动的批量提交脚本到数据库执行,数据库就提供了像存储过程这样的对象,方便开发人员把处理某个功能或报表的逻辑写到存储过程里。
1)存储过程的优点:
a.执行速度更快:在数据库中保存的存储过程语句都是编译过的
b.允许模块化程序设计和可移植性更强:类似方法的复用(使用存储过程可以实现存储过程设计和编码工作的分开进行,只要将存储过程名、参数、返回信息等告诉编程人员即可);
c.提高系统安全性:防止SQL注入 (执行存储过程的用户要具有一定的权限才能使用存储过程)
d.减少网络流通量:只要传输存储过程的名称(在大批数据查询时使用存储过程分页查询比其他方式的分页要快很多)
e.在同时进行逐主、从表间的数据维护及有效性验证时,使用存储过程更加方便,可以有效的利用SQL中的事务处理机制。
创建存储
2)创建语法:
create or replace procedure p_house_create_data(p_fm_dt date default sysdate - 1,
p_to_dt date default sysdate) is
/************************************************************
author :hf
created :2018-08-08
purpose :生成数据过程
parameter value
p_fm_dt 2018-08-01(昨天)
p_to_dt 2018-08-02(当日)
*************************************************************/
/************************************************************
定义区间
*************************************************************/
v_sqlstate varchar2(500);
v_proc_name varchar2(64) := 'p_house_create_data';
v_fm_dt date;
v_to_dt date;
begin
/************************************************************
赋值区间
*************************************************************/
v_sqlstate := '赋值';
v_fm_dt := trunc(p_fm_dt, 'DD');
v_to_dt := trunc(p_to_dt, 'DD');
/************************************************************
计算区间
*************************************************************/
v_sqlstate := '开始';
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK', null, null); --写日志
v_sqlstate := '删除数据';
delete t_landlord;
commit;
v_sqlstate := '生成房东信息数据';
insert into t_landlord
values
('001', '张强', '男', '13723870069', '001', '2010-03-12');
commit;
/************************************************************
结束区间
*************************************************************/
v_sqlstate := '结束';
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK', null, null); --写日志
/************************************************************
异常区间
*************************************************************/
exception
when others then
rollback; --回滚数据
pkg_rpt_system.sys_log(v_proc_name,
v_sqlstate,
'ERROR',
sqlcode,
substr(sqlerrm, 1, 3000)); --写日志
commit;
end p_house_create_data;
二:包(图片左边的package bodies目录):
其实包可以理解为是对存储过程和函数的方便管理,如果过程和函数多了,不方便查找,比较乱,哪么我们可以把相关的过程放在一起,或把业务逻辑相关的放在一起维护。
1)包的构成:
a.包头:是对包里的过程和函数的一个定义,相关于目录
b.包体:是对包里的过程和函数的实现,具体代码的逻辑实现。
2)创建语法:
--包头
create or replace package pkg_abc_create_data is
procedure p_house_create_data(p_fm_dt date default sysdate - 1,
p_to_dt date default sysdate);
end pkg_abc_create_data;
--包体
create or replace package body pkg_abc_create_data is
procedure p_house_create_data(p_fm_dt date default sysdate - 1,
p_to_dt date default sysdate) is
/************************************************************
author :hf
created :2018-08-08
purpose :生成数据过程
parameter value
p_fm_dt 2018-08-01(昨天)
p_to_dt 2018-08-02(当日)
*************************************************************/
/************************************************************
定义区间
*************************************************************/
v_sqlstate varchar2(500);
v_proc_name varchar2(64) := 'p_house_create_data';
v_fm_dt date;
v_to_dt date;
begin
/************************************************************
赋值区间
*************************************************************/
v_sqlstate := '赋值';
v_fm_dt := trunc(p_fm_dt, 'DD');
v_to_dt := trunc(p_to_dt, 'DD');
/************************************************************
计算区间
*************************************************************/
v_sqlstate := '开始';
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK', null, null);
v_sqlstate := '删除数据';
delete t_landlord;
commit;
v_sqlstate := '生成房东信息数据';
insert into t_landlord
values
('001', '张强', '男', '13723870069', '001', '2010-03-12');
commit;
/************************************************************
结束区间
*************************************************************/
v_sqlstate := '结束';
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate, 'OK', null, null);
/************************************************************
异常区间
*************************************************************/
exception
when others then
rollback;
pkg_rpt_system.sys_log(v_proc_name,
v_sqlstate,
'ERROR',
sqlcode,
substr(sqlerrm, 1, 3000));
commit;
end p_house_create_data;
end pkg_abc_create_data;
更多技术文章请关注公众号(长按后点识别图中二维码):
内容总结
以上是互联网集市为您收集整理的13-oracle_数据库存储过程和包的开发全部内容,希望文章能够帮你解决13-oracle_数据库存储过程和包的开发所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。