[置顶] Oracle PL/SQL中编写空操作的存储过程

原创 2015年11月18日 11:20:57
  原创文章,转载请注明作者:黄文海 来源:http://viscent.iteye.com,同步发布在:http://blog.viscenthuang.info/2012/10/oracle-plsql中编写空操作的存储过程/
  尽管我们编写存储过程(Stored Procedure)是希望其完成一些特定的功能。但是在某些情况下,现有的存储功能所实现的功能可能已经不再需要或者我们打算采用其它方式来实现,此时为了实现对现有系统的最小改动量(以尽可能的减少对现有系统的影响),我们不能删除这个存储过程,但需要修改这个存储过程使其做空操作,即不实现任何实质性功能。
   但是,Oracle在编译存储过程时,对存储过程体的代码有所要求:1、存储过程所声明的所有参数,在存储过程体中必须使用到;2、存储过程体中所有声明或者计算出的变量值必须在本过程中要被使用到。因此,要实现存储过程的空操作,我们无法通过注释掉原有存储过程体中的所有代码来实现,因为注释后的代码根本无法通过编译。也就是说,我们需要一些特殊处理以实现存储过程实现空操作:将存储过程体的代码写为一个if语句,而该语句的条件永远无法成立,并且这个语句又使用到了存储过程定义的所有变量。这样便可以使存储过程编译通过,而在其具体运行时,又不实现任何实质功能。

   比如,下面的存储过程中,假设timeStamp表示的是系统当前时间距离1970年1月1日的秒数(因此,该值永远只会是正数,不会是负数)。
create or replace procedure ADisabledSP(timeStamp number,
tableName varchar2) is
begin
if timeStamp<0 then --该条件永远无法成立,且使用了输入参数timeStamp
dbms_output.put_line('We are going to operate on table ' || tableName); --使用了输入参数tableName
end if;
end;


  上面的代码,通过在if语句中指定“timeStamp<0”这一无法成立的条件,使得整个if语句体内的代码永远无法被执行,从而达到空操作的目的。并且,if语句中的条件子句以及语句体中使用了本存储过程定义的所有变量,保证了编译能够通过。

sql判断空操作

1.resultSet在什么情况下回为空?(查询语句不执行?) 2.判断带条件语句的查询返回的时候,判断.next才能判断出是否为null?...
  • lijjianqing
  • lijjianqing
  • 2016年04月08日 15:19
  • 164

Oracle使用存储过程分页

今天我要说的就是基于Oracle存储过程的一种简单的分页方式,首先就是页面前端发起对分页的请求,然后向Oracle存储过程中传入页面当前数,页面大小,查询的SQL语句,而存储过程返回来的则是数据总条数...
  • lingyiwin
  • lingyiwin
  • 2016年04月26日 17:31
  • 1609

oracle中pl/sql编程---存储过程,函数,触发器,包

1.pl/sql编程 pl/sql 指procedure language 过程化/sql. pl/sql 是oracle在标准的sql语句基础上扩展的一种对oracle数据库进行编程的的语言。 ...
  • zhengqiqiqinqin
  • zhengqiqiqinqin
  • 2013年06月13日 22:28
  • 1634

pl/sql存储过程的递归调用,树形数据的展示

--pl/sql的树状结构的存储与展示 drop table article; create table article( id number primary key, --id cont v...
  • u010689306
  • u010689306
  • 2016年06月01日 00:46
  • 1616

使用PL/SQL创建,测试Oracle存储过程

首先在左边的文件夹中选中procedures文件夹,新建一个存储过程,如下: create or replace procedure uc_users_amount_pro(endDate in v...
  • u013755987
  • u013755987
  • 2015年01月29日 20:27
  • 2415

Oracle存储过程详解(四)-Oracle中Cursor介绍

参考资料:这里写链接内容一 概念游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存...
  • wangxy799
  • wangxy799
  • 2016年04月21日 17:56
  • 693

Oracle分页存储过程及PLSQL中的调用脚本

撰写过程:网上搜集测试了好多的Oracle分页存储过程代码,经测试整理后终于通过测试,特分享给大家测试步骤:1运行创建包命令;2、运行创建存储过程命令;3、运行调用分页存储过程语句测试环境:windo...
  • xqf222
  • xqf222
  • 2014年06月10日 16:11
  • 2590

oracle存储过程--在应用程序中访问存储过程程序完整举例

认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是...
  • u012110719
  • u012110719
  • 2015年08月18日 21:35
  • 1175

oracle开发中的存储过程,游标,if判断经典例子

、、、 存储过程由浅到深: 1.简单输出 create or replace procedure t_xuanze(name in varchar) as tname varchar(10)...
  • woqiang68
  • woqiang68
  • 2013年04月17日 22:39
  • 4290

Oracle 存储过程学习

Oracle 存储过程学习 目录 Oracle 存储过程 1 Oracle存储过程基础知识 1 Oracle存储过程的基本语法 2 关于Oracle存储过程的若干问题备忘 4 1....
  • u010361662
  • u010361662
  • 2016年05月20日 21:57
  • 13597
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[置顶] Oracle PL/SQL中编写空操作的存储过程
举报原因:
原因补充:

(最多只允许输入30个字)