当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle复合变量:RECORD(一)
发布时间:2010/10/25 9:41:15 来源:www.xue.net 编辑:城市总裁吧
 CREATE OR REPLACE PROCEDURE TEST_RECORD

  AS

  TYPE user_record_type IS RECORD(

  id users.id%TYPE,

  login_id users.login_id%TYPE,

  name users.name%TYPE);

  u_r_t user_record_type;

  BEGIN

  FOR recd IN (SELECT * FROM users) LOOP

  SELECT id,login_id,name INTO u_r_t FROM users WHERE id=recd.id;

  dbms_output.put_line('ID: '||u_r_t.id ||',    LOGIN_ID: '||u_r_t.login_id||',    NAME: '||u_r_t.name);

  END LOOP;

  NULL;

  END;

  一,什么是记录(Record)?

  由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。组成类似于多维数组。

  将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。

  记录可以直接赋值。RECORD1 :=RECORD2;

  记录不可以整体比较.

  记录不可以整体判断为空。

  二,%ROWTYPE和记录(Record)?

  请区别%ROWTYPE和记录(Record)类型。%ROWTYPE可以说是Record的升级简化版。

  区别在与前者结构为表结构,后者为自定义结构。二者在使用上没有很大区别。前者方便,后者灵活。在实际中根据情况来具体决定使用。

  Record + PL/SQL表可以进行数据的多行多列存储。

  三,如何创建和使用记录?

  ①创建记录类型

  语法:

  TYPE  记录名  IS RECORD

  (

  filed1 type1 [NOT NULL] [:=eXPr1],

  ....... ,

  filedN typen [NOT NULL] [:=exprn]

  )

  其中,filed1是标量的名字。

  ②声明记录类型变量:

  记录类型变量名 记录类型

  ③填充记录。

  ④访问记录成员

  记录类型变量名.filed1

  .........

  记录类型变量名.filedN

  注意:

  表字段类型修改后,还需要修改记录字段类型,有时候可能会忘记,从而出现错误。

  对于记录内每个字段(filed1.。。。),可以指定也可以使用%TYPE和%ROWTYPE动态指定记录字段类型。

  好处是表字段发生变化,记录字段自动改变。但是,由于每次执行前,遇到%TYPR或%ROWTYPE,

  数据库系统都会去查看对应表字段类型,会造成一定的数据库开销,如果系统中大量使用记录类型,则对性能会有一定影响。

  另外如果删除了某一字段,而自定义记录中使用了该字段,也会有可能忘记删除该字段。

  对数据库负荷偏低的系统,性能问题一般可以不重点关注,但是对于高负荷数据库服务器,

  各个环节都要考虑性能问题,每处节省一点出来,性能整体就有很大提高。

  语法:

  TYPE  记录名  IS RECORD

  (

  filed1 table.Filed%Type [NOT NULL] [:=eXPr1] ,

  filed2 table.Filed%Type [NOT NULL] [:=eXPr1] ,

  ....... ,

  filedn table.Filed%Type [NOT NULL] [:=exprn]

  );

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved