- 浏览: 142675 次
最新评论
-
whwh13764799336:
[color=red][/color]
出现Connection reset by peer: socket write error问题的原因 -
aihua_girl:
good
第三章 PL/SQL数据类型 -
haitunwan:
<result name="success ...
出现Connection reset by peer: socket write error问题的原因 -
ynial:
对接口使用注释 好吗?
spring 中的事务小结 -
poshboytl:
问题应该出在session中
由于迭代前session中存放的 ...
在学习<应用Rails进行敏捷Web开发>遇到问题
文章列表
第十章 PL/SQL对象类型
一、抽象的角色
抽象是对一个真实世界实体的高级描述或建模。它能排除掉无关的细节内容,使我们的日常生活更有条理。例如,驾驶一辆汽车时,我们是不需要知道它的发动机是如何工作的。由变速排档、方向盘、加速器和刹车组成的接口就能让我们有效地使用它。而其中每一项的详细信息对于日常驾驶来说并不重要。
抽象是编程的核心内容。例如,我们在隐藏一个复杂的算法时只要编写一个过程,然后为它传递参数就可以做到过程化抽象。如果需要改变具体的实现,换一个过程体即可。有了抽象后,那些调用过程的程序就不需要再修改了。
我们在指定变量的数据类型时,可以使用数据抽象。数据类型代表了对于想操作的数 ...
- 2008-04-24 10:20
- 浏览 3281
- 评论(0)
一、什么是PL/SQL包
包就是一个把各种逻辑相关的类型、常量、变量、异常和子程序组合在一起的模式对象。包通常由两个部分组成:包说明和包体,但有时包体是不需要的。说明(简写为spec)是应用程序接口;它声明了可用的类型、变量、常量、异常、游标和子程序,包体部分完全定义游标和子程序,并对说明中的内容加以实现。
如下例所示,我们可以认为说明部分是一个可选接口,而包体是一个"黑盒"。我们可以调试、增强或替换一个包体而不同改变接口(包说明)。
我们可以从SQL*Plus中使用CREATE PACKAGE语句来创建一个包。语法如下:
CREATE [OR REPLACE] ...
- 2008-04-24 10:17
- 浏览 1913
- 评论(0)
一、什么是子程序
子程序就是能够接受参数并被其他程序所调用的命名PL/SQL块。PL/SQL子程序有两种类型,过程和函数。一般地,过程用于执行一个操作,而函数用于计算一个结果值。
与未命名或匿名PL/SQL块一样,子程序也有声 ...
- 2008-04-24 10:16
- 浏览 1431
- 评论(0)
一、错误控制一览
在PL/SQL中,警告或错误被称为异常。异常可以是内部(运行时系统)定义的或是用户定义的。内部定义的案例包括除零操作和内存溢出等。一些常见的内部异常都有一个预定义的名字,如ZERO_DIVIDE和STORAGE_ERROR等。对于其它的内部异常,我们可以手动为它们命名。
我们可以在PL/SQL块、子程序或包的声明部分自定义异常。例如,我们可以定义一个名为insufficient_funds的异常来标示帐户透支的情况。与内部异常不同的是,用户自定义异常必须有一个名字。
错误发生时,异常就会被抛出。也就是说,正常的执行语句会被终止,控制权被转到PL/SQL块的异常控制部分或子 ...
- 2008-04-24 10:14
- 浏览 2083
- 评论(0)
12、游标变量的限制
目前,游标变量有以下限制:
不能在包中声明游标变量。例如,下面的声明就是不允许的:
CREATE PACKAGE emp_stuff AS TYPE empcurtyp IS REF CURSOR RETURN emp%ROWTYPE; emp_cv empcurtyp; -- not allowedEND emp_stuff;
处于另外一个服务器上的远程子程序不能接受游标变量的值。因此,我们不能使用RPC将游标变量从一个服务器传递到另一个服务器。
如果我们把主游标变量传递到PL/SQL中,就不能在服务器端从这个游标变量中取得数据 ...
- 2008-04-24 10:13
- 浏览 1578
- 评论(0)
四、使用游标FOR循环
在大多数需要使用显式游标的情况下,我们都可以用一个游标FOR循环来代替OPEN、FETCH和CLOSE语句。游标FOR循环隐式地声明了一个 %ROWTYPE类型的记录作为它的循环索引,打开游标,然后反复执行把结果集中的行 ...
- 2008-04-24 10:11
- 浏览 1423
- 评论(0)
第六章 PL/SQL与Oracle间交互
一、PL/SQL支持的SQL一览
PL/SQL扩展了SQL,变得更加强大和易用。我们可以用PL/SQL灵活安全地操作Oracle数据,因为它支持所有的SQL数据操作语句(除了EXPLAIN PLAN),事务控制语句,函数,伪列和操作符。PL/SQ ...
- 2008-04-24 10:05
- 浏览 1770
- 评论(0)
十四、利用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引擎在把数据返回给 ...
- 2008-04-24 10:03
- 浏览 1360
- 评论(0)
十一、避免集合异常
大多情况下,如果我们引用了一个集合中不存在的元素,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); ...
- 2008-04-24 10:01
- 浏览 2996
- 评论(0)
八、在SQL语句中使用PL/SQL的集合类型
集合允许我们用PL/SQL来操作复杂的数据类型。我们的程序能计算下标索引值,并在内存中处理指定的元素,然后用SQL语句把结果保存到数据库中。
1、关于嵌套表的例子
例一:创建与PL/SQL嵌 ...
- 2008-04-24 09:59
- 浏览 1625
- 评论(0)
第五章 PL/SQL集合与记录
一、什么是集合
集合就是相同类型的元素的有序合集。它一个通用的概念,其中包含了列表、数组和其他相似的数据类型。每一个元素都有唯一的下标来标识当前元素在集合中的位置。PL/SQL提供了以下 ...
- 2008-04-24 09:53
- 浏览 1868
- 评论(0)
四、PL/SQL命名规范
同样的命名规约适用于所有的PL/SQL程序,规约涉及的内容包括常量、变量、游标、异常、过程、函数和包。命名可能是简单的,加以限定的,远程的或是既加以限定又是远程的。例如,我们也许可能用到以下几 ...
- 2008-04-24 09:49
- 浏览 1283
- 评论(0)
第二章 PL/SQL基础
一、字符集
在PL/SQL程序中,允许出现的字符集包括:
大小写字母(A-Z和a-z)
数字(0-9)
符号( ) + - * / < > = ! ~ ^ ; : . ’ @ % , " # $ & _ | { } ? [ ]
制表符、空格和回车符
PL/SQL对大小写不敏感,所以,除了在字符串和字符中,小写字母和它对应的大写字母是等价的。
二、词法单元
PL/SQL包含很多词法单元(lexical unit),大致可以分为以下几类:
分隔符(简单符号和复合符号)
标识符,其中包括关键字
文字
注释
为 ...
- 2008-04-24 09:48
- 浏览 2835
- 评论(0)
第四章 PL/SQL的控制结构
一、PL/SQL控制结构一览
根据结构定理(structure theorem),任何计算机程序都可以用下图中的基本控制结构来表示。它们可以任意组合来解决问题。
选择结构是用于测试条件的,根据条件的真假,执行一系 ...
- 2008-04-24 09:39
- 浏览 1453
- 评论(0)
第三章 PL/SQL数据类型
一、预定义数据类型
Oracle的数据类型可以分为四类,分别是标量类型,复合类型,引用类型和LOB类型。标量类型没有内部组件;而复合类型包含了能够被单独操作的内部组件;引用类型类似于3G语言中的 ...
- 2008-04-24 08:38
- 浏览 3121
- 评论(1)