`
kevin.wang
  • 浏览: 251157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 复合变量 Record

阅读更多
一. 什么是记录(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

  注意:

  1. 表字段类型修改后,还需要修改记录字段类型,有时候可能会忘记,从而出现错误。
  2. 对于记录内每个字段(filed1.。。。),可以指定也可以使用%TYPE和%ROWTYPE动态指定记录字段类型。
  好处是表字段发生变化,记录字段自动改变。但是,由于每次执行前,遇到%TYPR或%ROWTYPE,
  数据库系统都会去查看对应表字段类型,会造成一定的数据库开销,如果系统中大量使用记录类型,则对性能会有一定影响。

 三. 使用记录向表中插入数据

  根据表结构合理安排记录字段。比如主外键。
  如果用记录(RECORD)插入数据,那么只能使用记录成员;
  如果用%ROWTYPE插入数据,可以直接使用%ROWTYPE。

  例子:使用记录成员向表中插入数据
DECLARE
    Type MyRecType Is  Record
    (
       RENO  EMPA.EMPNO%Type,
        RENAME   VARCHAR2(10),
       RJOB   EMPA.JOB%Type
      );

    EmpRec MyRecType;

Begin
       Select   EMPNO, ENAME, JOB  InTo  EmpRec  From empa Where empa.EMPNO = '7369';
  DBMS_OUTPUT.PUT_LINE(EmpRec.RENO||'  '||EmpRec.RENAME||'  '||EmpRec.RJOB);
    EmpRec.RENO  := 1001;
   EmpRec.RENAME := '杰克';
   EmpRec.RJOB  := '办事员';
   Insert InTo  empa(EMPNO,ENAME,JOB)Values(EmpRec.RENO, EmpRec.RENAME,EmpRec.RJOB);
End;


  
create or replace procedure p_test
   is
      rowvalue test%rowtype;
   begin
      rowvalue.a := '1';
      rowvalue.b := '2';
      --使用rowtype类型的数据直接处理
       insert into test values rowvalue;
      commit;
   end;


四. 使用记录更新数据
  如果用记录(RECORD)更新数据,那么只能使用记录成员;
  如果用%ROWTYPE更新数据,可以直接使用%ROWTYPE。

  例子:使用%ROWTYPE向表中插入数据

  
   DECLARE
      vEmp empa%RowType;

  Begin

    Select  *  InTo  vEmp  From empa Where empa.EMPNO = '7369';

    UpDate empa Set ROW = vEmp Where EMPNO = 1001;
  End;


  
分享到:
评论

相关推荐

    Oracle复合类型之RECORD

    Oracle复合类型之RECORD的深入浅出 Oracle复合类型之RECORD是Oracle数据库中的一种复杂数据类型,它允许用户定义一个包含多个字段的记录类型,类似于结构体或对象。 RECORD类型可以用于存储和处理复杂数据,使得...

    oracle变量的总结

    - **复合变量的使用**:复合变量如`%ROWTYPE`和`RECORD`能够有效地存储多个相关的值,适用于复杂的查询场景。 - **Oracle与布尔类型**:尽管Oracle不直接支持布尔类型,但可以通过`CHAR`类型的枚举值(例如1代表真,...

    Oracle定义PLSQL变量学习

    它们可以是基本数据类型,如NUMBER、VARCHAR2、DATE等,也可以是复合数据类型,如记录(Record)和表类型(Table)。定义PL/SQL变量的基本语法如下: ```sql DECLARE variable_name 数据类型; BEGIN -- 变量的...

    定义并使用变量,复合类型

    在Oracle的PL/SQL编程中,变量和复合类型的使用是至关重要的。首先,我们要了解变量的基本概念。变量是用来存储数据的容器,在PL/SQL中,我们可以定义不同类型的变量,包括标量类型、复合类型和参照类型等。 标量...

    Oracle变量概念详解.pdf

    复合变量是指可以保留多个值的变量,例如 rowtype、record、table 等。复合变量可以用来存储多个值,例如表中的记录、数组等。 在定义复合变量时,需要指定变量的名称和数据类型。例如: ```sql v7 rowtype; v8 ...

    Oracle变量定义详解.pdf

    在 Oracle 中,变量可以分为标量变量和复合变量。标量变量只能保存一个值,如 char、type 等;复合变量可以保存多个值,如 rowtype、record、table 等。 常见的 Oracle 变量类型包括: * char:字符串类型,用于...

    Oracle变量定义详解.docx

    复合变量可以保存多个值,例如 rowtype、record、table 等。 Oracle 中还有些特殊的变量类型,例如 boolean、type、rowtype、record 等。这些类型只能在 PL/SQL 脚本中使用,不能用于建表。 boolean 类型用于表达...

    oracle变量定义详解.docx

    除了基本数据类型,还可以声明复合类型变量,如记录(`RECORD` 类型)和游标变量(`CURSOR` 类型)。这些允许存储复杂的数据结构。 七、变量的并发处理 在多用户环境中,Oracle 提供了锁定机制来管理并发对变量的...

    Oracle PLSQL基础实验手册

    PL/SQL 变量可以是标量变量、复合变量 RECORD、复合变量 TABLE、复合变量 VARRAY 等。%TYPE 属性是 PL/SQL 变量的类型系统之一。 (III) 处理数据 处理数据是 PL/SQL 程序中最重要的部分之一,包括使用 SELECT 语句...

    Oracle PL/SQL中如何使用%TYPE和%ROWTYPE

    Oracle PL/SQL 中的 %TYPE 和 %ROWTYPE 应用详解 Oracle PL/SQL 是一种强大的编程...%TYPE 和 %ROWTYPE 是 Oracle PL/SQL 中两种非常重要的概念,它们可以帮助开发者更方便地声明变量,从而提高编程效率和代码质量。

    Oracle实验四.docx

    Oracle 实验四的目的是掌握 PL/SQL 语句块、PL/SQL 的基本语法、PL/SQL 的控制结构,掌握 PL/SQL 块中使用复合数据类型和游标的方法,掌握 PL/SQL 异常处理技术,掌握存储过程、存储函数、触发器高级数据库对象的...

    Oracle 12c PL SQL程序设计终极指南

    Oracle提供了一系列内置的数据类型,如NUMBER、VARCHAR2、DATE等,以及复合数据类型如记录(Record)和表(Table)。理解这些数据类型及其用法是编程的基础。 2. **流程控制**:PL/SQL支持IF-THEN-ELSE、CASE语句...

    oracle_plsql.rar_oracle

    开发者可以根据需求声明变量,它们可以是简单类型,也可以是复合类型,如记录(RECORD)和表(TABLE)。 3. **控制流程语句**:包括条件判断(IF...ELSIF...ELSE)、循环(FOR、WHILE、LOOP)和分支(CASE)等,...

    Oracle PL/SQL实战(待续)

    同时,PL/SQL支持多种数据类型,包括数值类型(NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)等,以及复合类型如记录(RECORD)和表类型(TABLE)。 此外,PL/SQL的包(PACKAGE)概念是将相关的过程和...

    oracle_oracle_oraclepl/sql_

    2. **变量和数据类型**:PL/SQL支持多种数据类型,包括数值型(如NUMBER)、字符型(VARCHAR2和CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及复合和对象类型。 3. **流程控制**:PL/SQL提供了IF-THEN-ELSIF-ELSE...

    oracle存储过程

    在PL/SQL中,变量有多种类型,如数值型(NUMBER)、字符型(VARCHAR2)、日期型(DATE)等,还有复合类型如记录(RECORD)和集合(TABLE)。变量的声明、初始化、赋值和使用都是学习的重点。 通过视频教程,你可以...

    Oracle数据库经典学习教程

    - **复合类型**:如RECORD、TABLE等。 ##### 4. PL/SQL条件控制和循环控制 - **IF语句**:根据条件执行不同的代码块。 - **LOOP语句**:重复执行一段代码直到满足某个条件为止。 ##### 5. PL/SQL中动态执行SQL语句...

    Oracle11g PLSQL Programming(pdf & source)

    4. **复合类型**:如记录(Record)和表类型(Table Type),这些允许创建自定义的数据结构,便于数据处理和存储。 5. **游标和索引**:游标的使用来遍历查询结果,以及索引的概念和创建,以提高查询性能。 6. **...

    oracle(proc程序设计.rar

    PL/SQL支持多种数据类型,包括数值型(如NUMBER)、字符型(如VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及复合数据类型如记录(RECORD)和表类型(TABLE)等。理解这些数据类型对于编写有效和高效的PL...

    PLSQL Oracle8i程序设计

    PLSQL支持多种内置数据类型,包括数值型(NUMBER、INTEGER、BINARY_INTEGER)、字符型(VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及各种复合数据类型,如记录(RECORD)和数组(PL/SQL TABLE)。...

Global site tag (gtag.js) - Google Analytics