zoukankan      html  css  js  c++  java
  • [Oracle整理]Oracle之ROWTYPE和RECORD

    说明:本内容是工作用到的知识点整理,来自工作中和网络。
    代码于Oracle9上测试。

    一,什么是记录(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和%ROWTYPE动态指定记录字段。

    数据集中的记录和记录类型中的数据关系。

    四,使用记录向表中插入数据?

    根据表结构合理安排记录字段。比如主外键。

    如果用记录(RECORD)插入数据,那么只能使用记录成员;

    如果用%ROWTYPE插入数据,可以直接使用%ROWTYPE。

    五,使用记录更新数据?

    如果用记录(RECORD)更新数据,那么只能使用记录成员;

    如果用%ROWTYPE更新数据,可以直接使用%ROWTYPE。

    六,使用记录删除数据?

    删除记录时,只能在delete语句的where子句中使用记录成员。

    学习数据

    http://www.examda.com/oracle/zonghe/20100709/090940858-1.html

    人的一生应该这样度过:当他回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。
  • 相关阅读:
    019_linuxC++之_函数模板引入
    018_linuxC++之_抽象类的引入
    017_linuxC++之_多态的引入
    《将博客搬至CSDN》
    016_linuxC++之_多重继承
    013_linuxC++之_派生类中权限的调整
    015_linuxC++之_覆写
    014_linuxC++之_不同类型的继承
    012_linuxC++之_类的继承定义
    011_linuxC++之_继承的引入
  • 原文地址:https://www.cnblogs.com/htht66/p/2346736.html
Copyright © 2011-2022 走看看