[置顶] Oracle PL/SQL中编写空操作的存储过程
来源:互联网 发布:威海seo 编辑:程序博客网 时间:2024/06/05 00:12
原创文章,转载请注明作者:黄文海 来源:http://viscent.iteye.com,同步发布在:http://blog.viscenthuang.info/2012/10/oracle-plsql中编写空操作的存储过程/
尽管我们编写存储过程(Stored Procedure)是希望其完成一些特定的功能。但是在某些情况下,现有的存储功能所实现的功能可能已经不再需要或者我们打算采用其它方式来实现,此时为了实现对现有系统的最小改动量(以尽可能的减少对现有系统的影响),我们不能删除这个存储过程,但需要修改这个存储过程使其做空操作,即不实现任何实质性功能。
但是,Oracle在编译存储过程时,对存储过程体的代码有所要求:1、存储过程所声明的所有参数,在存储过程体中必须使用到;2、存储过程体中所有声明或者计算出的变量值必须在本过程中要被使用到。因此,要实现存储过程的空操作,我们无法通过注释掉原有存储过程体中的所有代码来实现,因为注释后的代码根本无法通过编译。也就是说,我们需要一些特殊处理以实现存储过程实现空操作:将存储过程体的代码写为一个if语句,而该语句的条件永远无法成立,并且这个语句又使用到了存储过程定义的所有变量。这样便可以使存储过程编译通过,而在其具体运行时,又不实现任何实质功能。
比如,下面的存储过程中,假设timeStamp表示的是系统当前时间距离1970年1月1日的秒数(因此,该值永远只会是正数,不会是负数)。
上面的代码,通过在if语句中指定“timeStamp<0”这一无法成立的条件,使得整个if语句体内的代码永远无法被执行,从而达到空操作的目的。并且,if语句中的条件子句以及语句体中使用了本存储过程定义的所有变量,保证了编译能够通过。
尽管我们编写存储过程(Stored Procedure)是希望其完成一些特定的功能。但是在某些情况下,现有的存储功能所实现的功能可能已经不再需要或者我们打算采用其它方式来实现,此时为了实现对现有系统的最小改动量(以尽可能的减少对现有系统的影响),我们不能删除这个存储过程,但需要修改这个存储过程使其做空操作,即不实现任何实质性功能。
但是,Oracle在编译存储过程时,对存储过程体的代码有所要求:1、存储过程所声明的所有参数,在存储过程体中必须使用到;2、存储过程体中所有声明或者计算出的变量值必须在本过程中要被使用到。因此,要实现存储过程的空操作,我们无法通过注释掉原有存储过程体中的所有代码来实现,因为注释后的代码根本无法通过编译。也就是说,我们需要一些特殊处理以实现存储过程实现空操作:将存储过程体的代码写为一个if语句,而该语句的条件永远无法成立,并且这个语句又使用到了存储过程定义的所有变量。这样便可以使存储过程编译通过,而在其具体运行时,又不实现任何实质功能。
比如,下面的存储过程中,假设timeStamp表示的是系统当前时间距离1970年1月1日的秒数(因此,该值永远只会是正数,不会是负数)。
create or replace procedure ADisabledSP(timeStamp number,tableName varchar2) isbeginif timeStamp<0 then --该条件永远无法成立,且使用了输入参数timeStampdbms_output.put_line('We are going to operate on table ' || tableName); --使用了输入参数tableNameend if;end;
上面的代码,通过在if语句中指定“timeStamp<0”这一无法成立的条件,使得整个if语句体内的代码永远无法被执行,从而达到空操作的目的。并且,if语句中的条件子句以及语句体中使用了本存储过程定义的所有变量,保证了编译能够通过。
0 0
- [置顶] Oracle PL/SQL中编写空操作的存储过程
- PL/SQL中编写Oracle数据库分页的存储过程
- PL/SQL中编写Oracle数据库分页的存储过程
- Oracle 编写存储过程,在pl/sql中调用编写好的存储过程例子
- 在java中调用pl/sql编写的存储过程
- oracle pl/sql中 执行带 OUT 的存储过程
- PL/SQL Developer中调试oracle的存储过程
- 在pl/sql developer中测试存储过程的操作
- pl/sql 编写 Oracle分页的存储过程 Java调用该过程
- Oracle PL/SQL的存储过程
- oracle PL/SQL 存储过程
- Oracle PL/SQL 存储过程
- pl/sql 编写 Oracle存储过程 调用存储过程返回集合
- Oracle pl/sql编程 19---在java中调用无参数的oracle存储过程
- oracle 简单存储过程及在PL/Sql中执行
- 在 PL/SQL 中调用存储过程 oracle
- oracle中pl/sql编程---存储过程,函数,触发器,包
- 在PL/SQL中调用存储过程--oracle
- 少走弯路的10条忠告
- 一个数据采集系统的设计及重要点
- iOS调用系统相册、相机界面语言设置为中文
- [置顶] 《孙子兵法》在敏捷项目管理中的应用
- Kinect2.0系统配置要求
- [置顶] Oracle PL/SQL中编写空操作的存储过程
- [置顶] Linux下恢复被误删除的syslog—/var/log/messages
- Robotics Toolbox学习(未完待续)
- [置顶] 敏捷项目管理实战之在敏捷开发中引入 Story 演示
- [置顶] Java多线程编程模式实战指南(一):Active Object模式(上)
- 关于安卓 TextView 添加点击事件
- [置顶] Java多线程编程模式实战指南(一):Active Object模式(下)
- [置顶] Java多线程编程模式实战指南(二):Immutable Object模式
- ViewPager 详解(三)---PagerTabStrip与PagerTitleStrip添加标题栏的异同