我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库实验之 触发器和存储过程

目录一、实验目的二、实验要求三、实现内容及步骤1、创建一个不带参数的简单存储过程2、创建一个带输入参数的存储过程3、创建一个带输入输出参数的存储过程4、触发器的创建与使用四、实验总结观前提示:本篇内容为mysql数据库实验,代码内容经测试过
2022-06-20

MySQL数据库的触发器和存储过程实例分析

这篇文章主要介绍“MySQL数据库的触发器和存储过程实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL数据库的触发器和存储过程实例分析”文章能帮助大家解决问题。一、实验目的1、掌握某主
2023-07-02

Oracle数据库存储过程的调试过程

目录oracle存储过程调试方法Oracle 存储过程的调试总结oracle存储过编程客栈程调试方法PL/SQL中为我们提供了【调试存储过程】的功能,可以帮助你完成存储过程的预编编程客栈译与测试。点击要调试的存储过程,右键选择TEST如
2022-07-05

Oracle数据库开发:编写存储过程判断表是否存在

在Oracle数据库开发中,编写存储过程来判断表是否存在是一项常见的任务。在数据库开发中,存储过程是一段预先编译的代码块,用于实现特定的功能或逻辑。通过编写存储过程来判断表是否存在,可以方便地对数据库进行管理和操作。本文将介绍如何在Orac
Oracle数据库开发:编写存储过程判断表是否存在
2024-03-09

MyBatis怎么支持数据库的存储过程和函数

MyBatis支持数据库的存储过程和函数,可以通过调用存储过程和函数来执行数据库操作。以下是在MyBatis中使用存储过程和函数的一般步骤:在MyBatis Mapper XML文件中定义存储过程或函数的调用语句,如下所示:
MyBatis怎么支持数据库的存储过程和函数
2024-05-08

汇总数据库信息的存储过程

问题:  mysql日常开发过程中,数据库、表的很多信息分散在不同的工具和不同的界面中,来回切换查找非常麻烦。解决方式:  基于这个问题,写了一个存储过程,将这些日常需要的信息集合在一个存储过程中,查询起来非常方便。       工具合集中写了其他存储过程的调
汇总数据库信息的存储过程
2017-02-26

Linux数据库的存储过程是什么

在Linux上,存储过程是一组SQL语句的集合,它们被存储在数据库中并可以被调用和执行。存储过程通常用来执行一系列的操作,比如插入、更新、删除数据,并且可以接收参数进行动态操作。在Linux上,常见的数据库管理系统如MySQL、Postg
Linux数据库的存储过程是什么
2024-05-06

编程热搜

目录