`
文章列表
第十章 PL/SQL对象类型 一、抽象的角色 抽象是对一个真实世界实体的高级描述或建模。它能排除掉无关的细节内容,使我们的日常生活更有条理。例如,驾驶一辆汽车时,我们是不需要知道它的发动机是如何工作的。由变速排档、方向盘、加速器和刹车组成的接口就能让我们有效地使用它。而其中每一项的详细信息对于日常驾驶来说并不重要。 抽象是编程的核心内容。例如,我们在隐藏一个复杂的算法时只要编写一个过程,然后为它传递参数就可以做到过程化抽象。如果需要改变具体的实现,换一个过程体即可。有了抽象后,那些调用过程的程序就不需要再修改了。 我们在指定变量的数据类型时,可以使用数据抽象。数据类型代表了对于想操作的数 ...
一、什么是PL/SQL包 包就是一个把各种逻辑相关的类型、常量、变量、异常和子程序组合在一起的模式对象。包通常由两个部分组成:包说明和包体,但有时包体是不需要的。说明(简写为spec)是应用程序接口;它声明了可用的类型、变量、常量、异常、游标和子程序,包体部分完全定义游标和子程序,并对说明中的内容加以实现。 如下例所示,我们可以认为说明部分是一个可选接口,而包体是一个"黑盒"。我们可以调试、增强或替换一个包体而不同改变接口(包说明)。 我们可以从SQL*Plus中使用CREATE PACKAGE语句来创建一个包。语法如下: CREATE [OR REPLACE] ...
一、什么是子程序 子程序就是能够接受参数并被其他程序所调用的命名PL/SQL块。PL/SQL子程序有两种类型,过程和函数。一般地,过程用于执行一个操作,而函数用于计算一个结果值。 与未命名或匿名PL/SQL块一样,子程序也有声 ...
一、错误控制一览 在PL/SQL中,警告或错误被称为异常。异常可以是内部(运行时系统)定义的或是用户定义的。内部定义的案例包括除零操作和内存溢出等。一些常见的内部异常都有一个预定义的名字,如ZERO_DIVIDE和STORAGE_ERROR等。对于其它的内部异常,我们可以手动为它们命名。 我们可以在PL/SQL块、子程序或包的声明部分自定义异常。例如,我们可以定义一个名为insufficient_funds的异常来标示帐户透支的情况。与内部异常不同的是,用户自定义异常必须有一个名字。 错误发生时,异常就会被抛出。也就是说,正常的执行语句会被终止,控制权被转到PL/SQL块的异常控制部分或子 ...
12、游标变量的限制 目前,游标变量有以下限制: 不能在包中声明游标变量。例如,下面的声明就是不允许的: CREATE PACKAGE emp_stuff AS  TYPE empcurtyp IS REF CURSOR    RETURN emp%ROWTYPE;  emp_cv   empcurtyp;   -- not allowedEND emp_stuff; 处于另外一个服务器上的远程子程序不能接受游标变量的值。因此,我们不能使用RPC将游标变量从一个服务器传递到另一个服务器。 如果我们把主游标变量传递到PL/SQL中,就不能在服务器端从这个游标变量中取得数据 ...
四、使用游标FOR循环 在大多数需要使用显式游标的情况下,我们都可以用一个游标FOR循环来代替OPEN、FETCH和CLOSE语句。游标FOR循环隐式地声明了一个 %ROWTYPE类型的记录作为它的循环索引,打开游标,然后反复执行把结果集中的行 ...
第六章 PL/SQL与Oracle间交互 一、PL/SQL支持的SQL一览 PL/SQL扩展了SQL,变得更加强大和易用。我们可以用PL/SQL灵活安全地操作Oracle数据,因为它支持所有的SQL数据操作语句(除了EXPLAIN PLAN),事务控制语句,函数,伪列和操作符。PL/SQ ...
十四、利用BULK COLLECTION子句为集合赋值 关键字BULK COLLECT会通知SQL引擎在将数据返回给PL/SQL引擎之前,把输出的数据批量地绑定到一个集合。我们可以在SELECT INTO、FETCH INTO和RETURNING INTO子句中使用BULK COLLECT。语法如下: ... BULK COLLECT INTO collection_name[, collection_name] ... SQL引擎能批量绑定出现在INTO列表后的所有集合。对应的字段可以保存为标量类型或复合类型的值,其中也包括对象类型。在下面的例子中,SQL引擎在把数据返回给 ...
十一、避免集合异常 大多情况下,如果我们引用了一个集合中不存在的元素,PL/SQL就会抛出一个预定义异常。例如: DECLARE  TYPE numlist IS TABLE OF NUMBER;  nums   numlist;   -- atomically nullBEGIN  /* Assume execution continues despite the raised exceptions. */  nums(1)       := 1;   -- raises COLLECTION_IS_NULL (1)  nums          := numlist(1, 2);  ...
八、在SQL语句中使用PL/SQL的集合类型 集合允许我们用PL/SQL来操作复杂的数据类型。我们的程序能计算下标索引值,并在内存中处理指定的元素,然后用SQL语句把结果保存到数据库中。 1、关于嵌套表的例子 例一:创建与PL/SQL嵌 ...
第五章 PL/SQL集合与记录 一、什么是集合 集合就是相同类型的元素的有序合集。它一个通用的概念,其中包含了列表、数组和其他相似的数据类型。每一个元素都有唯一的下标来标识当前元素在集合中的位置。PL/SQL提供了以下 ...
四、PL/SQL命名规范 同样的命名规约适用于所有的PL/SQL程序,规约涉及的内容包括常量、变量、游标、异常、过程、函数和包。命名可能是简单的,加以限定的,远程的或是既加以限定又是远程的。例如,我们也许可能用到以下几 ...
第二章 PL/SQL基础 一、字符集 在PL/SQL程序中,允许出现的字符集包括: 大小写字母(A-Z和a-z) 数字(0-9) 符号( ) + - * / < > = ! ~ ^ ; : . ’ @ % , " # $ & _ | { } ? [ ] 制表符、空格和回车符 PL/SQL对大小写不敏感,所以,除了在字符串和字符中,小写字母和它对应的大写字母是等价的。 二、词法单元 PL/SQL包含很多词法单元(lexical unit),大致可以分为以下几类: 分隔符(简单符号和复合符号) 标识符,其中包括关键字 文字 注释 为 ...
第四章 PL/SQL的控制结构 一、PL/SQL控制结构一览 根据结构定理(structure theorem),任何计算机程序都可以用下图中的基本控制结构来表示。它们可以任意组合来解决问题。 选择结构是用于测试条件的,根据条件的真假,执行一系 ...
第三章 PL/SQL数据类型 一、预定义数据类型 Oracle的数据类型可以分为四类,分别是标量类型,复合类型,引用类型和LOB类型。标量类型没有内部组件;而复合类型包含了能够被单独操作的内部组件;引用类型类似于3G语言中的 ...
Global site tag (gtag.js) - Google Analytics