PL/SQL处理异常不同于其他程序语言的错误管理方法,PL/SQL的异常处理机制与ADA很相似,有一个处理错误的全包含方法。当发生错误时,程序无条件转到异常处理部分,这就要求代码要非常干净并把错误处理部分和程序的其它部分分开。oracle允许声明其他异常条件类型以扩展错误/异常处理。这种扩展使PL/SQL的异常处理非常灵活。
1.确认现有对象 SQL> col fdesc for a30 SQL> select fid,fname,fdesc from eygle_blob; FID FNAME FDESC 1 ShaoLin.jpg 少林寺康熙手书 2 DaoYing.jpg
在把ORACLE的数据库从8i升级到9i及以上的时候,一般认为原有的PLSQL程序应该完全兼容,即运行过程和运行结果完全一致。遗憾的是,事实并非如此,由于ORACLE PLSQL引擎的升级,它对某些代码解释做了更改,导致某些代码会有不同的运行结果。各位在升级数据库时必须重视,否则将导致无法估量的损失和难以恢复的灾难。 1
DBMS_APPLICATION_INFO 可以设置SESSION的MODULE,ACTION,CLIENT INFO等状态信息,对应着v$session表中的3个字段,方便了SQL TRACE和 跟踪定位出问题的程序。 可以在PL/SQL块,事务,批处理程序中调用该包,建议在存储过程中调用。如果直接将DBMS_APPLICATION_INFO编码到代码中,会引起不必要的 netw
我从1990年就开始编写PL/SQL代码。这意味着我已经编写了几万行的软件代码,但我确信,其中的绝大多数代码都非常拙劣,而且难以维护。 幸运地是,我发现找到并遵循编写出更好代码的新方法还为时不晚。就是在去年,我的代码质量有了显著改进;这些改进主要是由于制定了一些简单的规则,并像纪律一样加以遵守。
一条提高数据库应用程序性能的通用准则就是“80%的应用程序,20%的数据库”。 这意味着就平均情况而言,开发者可以通过调整数据库参数解决软件20%的性能问题,而有80%的问题则需要对应用程序的设计思路和逻辑进行修改。 然而,开发人员面对这样类似问题时,最为直接的冲动就是按照手册上的示例立刻开始编
因为在PL/SQL中并没有数组,这是我查资料找的范例和自己写的范例来解释如何在PL/SQL中使用数组。也许很多人已知道,不过就是让不知道的朋友们了解一下吧。 单维数组 DECLARE TYPE emp_ssn_array IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; best_employees emp_ssn_array; worst_employe
考虑下面的 PL/SQL 代码,这段代码生成一个 XML 格式的矩阵样式的报表: declare l_count integer; begin dbms_output.put_line(''<matrix>''); generate matrix of parts by country for part in (select id,description from parts order by description) loop dbms_output.put_line
问题: 这样一条sql应该怎么优化? select * from sys_user where user_code = ''zhangyong'' or user_code in (select grp_code from sys_grp where sys_grp.user_code = ''zhangyong'') Execution Plan 0 SELECT STATEMENT Optimizer=RULE 1 0 FILTER 2 1 TABLE
在Oracle提供的standard Package中,并没有产生随机数的function或procedure.下面的例子是使用PL/SQL些的一个随机数产生器。 CREATE OR REPLACE package pk_rand is /************************************************************** * 这个package返回一个01之间的随机数,可以通过设置s
1.1 PL/SQL简介 PL/SQL是ORACLE的过程化语言,包括一整套的数据类型、条件结构、循环结构和异常处理结构,PL/SQL可以执行SQL语句,SQL语句中也可以使用PL/SQL函数。 默认安装完Oracle后,初学者应该了解下面的一些SQL语句: 1、连接 SQL*Plus system/manager 2、显示当前连接用户
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。 PL/SQL的优点 从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及
PL/SQL光标为程序提供了从数据库中选择多行数据,然后对每行数据单独进行处理的方法,它为Oracle提供了一种指示和控制SQL处理的各个阶段的方法。我将认为您已经对PL/SQL有一定的了解。通过本文,您将学会: 光标的创建 光标的处理 定义和使用光标属性 一、 什么是光标 Oracle使用两种光标:显式光标
很长一段时间内,PL/SQL开发人员必须有一个“indexby表”才能创建某个指定数据类型的或者PL/SQL记录的表。因为他们只接受整型数据以从数组中提取数据,所以类型声明的末尾子句以“INDEX BY BINARY_INTEGER”结束。如果想以非整型值作为索引,要么你必须创建一个存储过程来扫描需要的值,要么你必须在一个单独的表上建立一个
PL/SQL有两种复合数据结构:记录和集合。记录由不同的域组成,集合由不同的元素组成。在本文中我们将讨论记录和集合的类型、怎样定义和使用记录和集合。 PL/SQL 记录 记录是PL/SQL的一种复合数据结构,scalar数据类型和其他数据类型只是简单的在包一级进行预定义,但复合数据类型在使用前必须被定义,记录之所以被称
Oracle8i数据库的一个重要特点是在数据库引擎中包含了Java虚拟机(JVM)。该功能使得用户可以在数据库中以与PL/SQL代码平等的地位运行Java代码。Java的简单性和可移植性不仅使Oracle可以很好的工作在Internet上,而且也大大扩展了PL/SQL语言的能力。下面以一个简单的例子来说明这一点。 我们知道,在Oracle PL/SQL的
PL/SQL里,有三种方法可以在处理大批量数据时不会因为一条或几条数据错误而导致异常中止程序。 1、用Fetch into a cursor%TYPE把要处理的数据放到记录集里。当一条数据不符条件时,用标签<<NEXT_RECORD>>和GOTO NEXT_RECORD跳转语句使程序忽略这一条,转到下一条继续处理。 Function
函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则。 SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混
第一阶段 Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息。 A. DECLARE erec emp%ROWTYPE; BEGIN SELECT * INTO erec FROM emp WHERE empno=&雇员编号; DBMS_OUTPUT.PUT_LINE(''EmpNo'' || '' '' || ''Ename'' || '' ''|| ''Job'' || '' '' || ''Manager'' || '' '' || ''HireD
Oracle Release 2提供对PL/SQL集合的增强,它可以通过以前的发布版本进行代码维护。例如,你可以在Release 2中将PL/SQL集合用作一个单一的参数,从而避免了使用一长串的域作为参数。 另外一个优点是记录的集合现在可以是BULK COLLECTION INTO子句的目标。在Release 2以前,我们必须为返回的每个列创建一个集合。例如