文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

13-oracle_数据库存储过程和包的开发

2024-04-02 19:55

关注

13-oracle_数据库存储过程和包的开发

一:存储过程 ( 图片左边的 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

 

 

  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

   

   

    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;

 


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯