原创文章,转载请注明作者:黄文海 来源:
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语句中的条件子句以及语句体中使用了本存储过程定义的所有变量,保证了编译能够通过。
分享到:
相关推荐
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...
此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型转换、程序设计指导原则、合并数据库中的数据行(MERGE)、约束、索引、子查询、分页技术等高级主题。 最后,还有关于字符串、数值、...
除了基本的数据库对象创建,PL/SQL还允许我们编写存储过程、函数、触发器等,以实现更复杂的业务逻辑。例如,我们可以创建一个存储过程来处理学生选课: ```sql CREATE OR REPLACE PROCEDURE enroll_student( p_...
PL/SQL是Oracle数据库中用于创建存储过程、函数、触发器、包等数据库对象的主要工具。第4版特别关注了在Oracle 11g环境下的新特性,如性能优化、错误处理和并发控制等。 1. **基础语法**:PL/SQL的基础包括声明变量...
- **环境搭建与配置**:本书将介绍如何在不同的操作系统环境下安装并配置Oracle 11g数据库环境,以及如何设置PL/SQL Developer或其他开发工具来编写和测试PL/SQL代码。 - **基本语法与结构**:包括数据类型、变量...
Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...
《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...
5. **记录和表操作**:PL/SQL提供了内置的DML(数据操纵语言)语句,如INSERT、UPDATE、DELETE,可以直接在PL/SQL块中操作数据库表。教材还会讲解如何使用BULK COLLECT和FORALL语句进行批量操作,提高效率。 6. **...
**标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。 **关键词**:Oracle 9i、PL/SQL #### PL/SQL程序结构详解 **2.1...
本书的第四版详细介绍了Oracle PL/SQL的各种核心概念和技术,帮助读者深入理解和掌握如何在Oracle环境中有效地编写和管理PL/SQL代码。 PL/SQL是Oracle数据库提供的一个内置编程语言,它将SQL的查询能力与过程编程...
Oracle PL/SQL 语言是Oracle数据库系统中的一种高级编程语言,它是SQL的扩展,专为数据库管理和应用程序开发设计。PL/SQL集成了SQL的查询、操纵、定义和控制功能,并添加了过程化编程元素,使其成为数据库管理和开发...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和PL(过程化语言)的程序设计特性,是Oracle数据库系统中的核心组件之一。《精通Oracle PL/SQL》这本书深入探讨了这个语言的...
本书是关于Oracle PL/SQL编程的权威指南,被认为是数据库社区中最优秀的Oracle编程书籍之一。第五版涵盖了Oracle Database 11g Release 2的所有新功能,并提供了大量示例代码,包括简单的示例到复杂的完整应用程序。...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和过程性编程语言的控制结构。在"Oracle PL/SQL"这本书中,作者深入浅出地探讨了这一语言的核心概念和实用技巧,尤其适合法语...
PL/SQL是Oracle数据库特有的结构化查询语言扩展,它结合了SQL的强大功能与过程性编程语言的特点,使得开发者能够编写复杂的业务逻辑和数据库操作。 在本教程中,学生将学习以下核心知识点: 1. **PL/SQL概述**:...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和Procedural Language的控制结构,使得数据库管理员和开发人员能够创建复杂的数据处理逻辑和应用程序。本篇将深入探讨Oracle PL/SQL的最佳实践,...
Oracle PL/SQL程序设计是数据库开发中的核心技能之一,尤其在企业级应用中广泛使用。本书《Oracle PL/SQL程序设计(第5版)》由O'Reilly出版社出版,为学习和理解Oracle数据库的PL/ZIP编程语言提供了丰富的示例代码...
最后,ChapterExampleScripts.zip可能包含的是各章的示例脚本,这些脚本可能涵盖了从基础的SQL查询到复杂的事务处理、存储过程的编写、数据库连接池的使用等多个方面。通过阅读和执行这些脚本,读者能掌握如何在PL/...