楼主: amol0311

[精华] [EXAM][001] 001考点归纳

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
11#
 楼主| 发表于 2002-7-15 23:17 | 只看该作者
使用符合数据类型
一个PL/SQL表按两个步骤声明(declare),首先声明表的类型,然后一个PL/SQL表声明为这种类型。例:
DECLARE
     TYPE customer_table_type IS TABLE OF customer%ROWTYPE
          INDEX BY BINARY_INTEGER;
     customer_table customer_table_type;
声明部分必须先基于CUSTOMER表创建CUSTOMER_TABLE_TYPE 的表的数据类型,然后,把CUSTOMER_TABLE 声明成CUSTOMER_TABLE_TYPE类型。

一个记录(record)至少要有一个域,必要时可有多个域。你可以声明和引用嵌套的记录。
记录可以定义为NOT NULL。记录中的数据可以是不同的数据类型。

DECLARE
     TYPE product_table_type IS TABLE OF product%ROWTYPE
          INDEX BY BINARY_INTEGER;
      product_table product_table_type;

执行以下语句:
product_table(10).manufacturer_id := 5;
PL/SQL表PRODUCT_TABLE 的记录10中的MANUFACTURER_ID域被设置为5。

如果不知道数据库字段的数据类型和数目,或者运行时,数据库字段的数据类型和数目可能会改变,可使用%ROWTYPE属性来声明一个PL/SQL域。%ROWTYPE属性可根据数据库表格或视图的字段集合,声明一个PL/SQL记录。

BINARY_INTEGER 是主关键字(primary key)的数据类型,用作PL/SQL的索引。



编写显式游标
游标FOR循环立时不需要FETCH语句的。游标打开,在循环中每次重复提取一行,所有的行都处理后,游标会自动关闭。

控制显式游标的四个命令里,CURSOR语句用于声明一个显式游标,定义参数。OPEN语句用于执行查询和为引用的变量赋值,如果查询没有返回行,PL/SQL不会产生异常。FETCH语句和INTO子句用于把当前行的值提取到变量中。在完成行的处理后,CLOSE语句会关闭游标,释放行的活动集合,游标关闭后可以重新打开并建立新的活动集合。

显式游标用于返回多于一行的查询,隐式游标会被隐式声明,用于所有的DML语句和SELECT语句,每一次只处理一行。隐式游标不能通过使用OPEN, FETCH, 和CLOSE语句控制。显式游标用于个别地处理查询返回的多行数据。

在PL/SQL的执行部分为一个记录赋值的语法:
record_name.field_name := expression;

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
12#
 楼主| 发表于 2002-7-15 23:18 | 只看该作者
高级显式游标概念
伴随FOR UPDATE子句一起使用的UPDATE 和 DELETE 语句中可以使用WHERE CURRENT OF 子句。WHERE CURRENT OF字句用于更新或删除当前行。FOR UPDATE OF子句会锁定被SELECT语句影响的行。

DECLARE
  CURSOR inv_cursor (p_man_id NUMBER, p_name VARCHAR2)
  IS
     SELECT id, name
     FROM    inventory
     WHERE manufacturer_id = p_man_id
AND       name = p_name;
如果你创建了一个带参数的游标,你可以在打开游标时传递值。要把值传递到游标INV_CURSOR,执行以下句子:OPEN inv_cursor (45094, 'Cable');
游标打开时,45094和‘Cable’会传递到参数P_MAN_ID和 P_NAME。

你可以在FROM子句中使用子查询来为查询创建一个数据源,这样的查询可以用作游标的数据源。

如果你声明游标时定义了一个带参数的游标,你必须指定指定参数的数据类型,但不用指定大小。


处理例外
声明部分用于声明ORACLE服务器的非预定义异常和用户定义异常,俘获非预定义异常先要在声明部分声明异常的名称。语法:exception EXEPTION;   
然后把声明的异常和标准的ORACLE服务器错误编号相关联,使用EXCEPTION_INIT语句,语法:PRAGMA EXCEPTION_INIT (exception,error_number);

俘获用户自定义异常,先要在声明部分声明用户自定义异常的名称,语法:
exception EXEPTION;
然后在执行部分,使用RAISE语句显式引发异常,语法:RAISE exception;

当一个子块处理异常后,它会正常结束,并且控制在封闭块(enclosing block)的子块END语句后恢复。如果PL/SQL引发了异常,而当前块没有该异常的处理程序,异常会在封闭块中传播,直到它找到一个处理程序。如果上述块均未处理该异常,这将会在主机环境中引起一个未处理异常。当异常传播到封闭块时,块的其余部分将被绕过。

一些预定义的异常:
NO_DATA_FOUND       单行SELECT查询没有返回数据。
TOO_MANY_ROWS      单行SELECT查询返回多行数据。
INCALID_CURSOR       发生非法游标操作。
ZERO_DIVIDE           试图被0除。
DUP_VAL_ON_INDEX    试图在具有唯一索引的字段中插入重复值。

WHEN OTHERS子句放置在所有其他异常处理自居的后面,用于所有未显示列出的异常。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
13#
 楼主| 发表于 2002-7-15 23:23 | 只看该作者
这是原来的文档,希望能帮有需要的新手

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
14#
发表于 2002-7-15 23:55 | 只看该作者

goog aritcle

thx

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33管理团队2006纪念徽章
日期:2006-04-16 22:44:45会员2006贡献徽章
日期:2006-04-17 13:46:34
15#
发表于 2002-7-16 08:26 | 只看该作者
不错,加入精华区。:)

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2002-7-16 08:52 | 只看该作者
Good Document!

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:332010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41
17#
发表于 2002-7-16 12:24 | 只看该作者
這正是我要的
謝謝你

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
18#
 楼主| 发表于 2002-7-18 01:42 | 只看该作者
版主也是的,我把这投到投稿区,都两个月了,根本没人看过,更不用说回复了,现在分段登出来,你才赞好。早点认可,快给我一个名分,让我进会员区吧

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2003-1-17 13:18 | 只看该作者
考前我都不忘来这里看看,每次都收获颇丰。

使用道具 举报

回复
论坛徽章:
2
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44复活蛋
日期:2012-12-03 16:57:22
20#
发表于 2003-7-10 14:40 | 只看该作者
好东东

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表