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

Oracle 中使用的%TYPE和%ROWTYPE类型的变量和复合变量

阅读更多

 

Oracle 中使用的%TYPE和%ROWTYPE类型的变量和复合变量

 

   在定义变量时处理可以使用oracle规定的数据类型外,还可以使用%TYPE%ROWTYPE来定义变量.

     %TYPE类型的变量是专门为存储在数据列中检索到的值而创建的.对于使用%TYPE创建的变量,其数据类型由系统根据检索的数据列的数据类型决定.

     %ROWTYPE类型的变量,它可以一次存储从数据库检索的一行数据。

当你不知道表中的数据类型是什么时候?那你就考虑%TYPE来解决此问题。

 

%TYPE

SQL> declare

  2     empno emp.empno%TYPE; //声明的时候一定要加上表的中列

  3     ename emp.ename%TYPE;

  4     job   emp.job%TYPE;

  5  begin

  6     select empno,ename,job into empno,ename,job from emp where empno='7369';

  7     dbms_output.put_line(empno||'/'||ename||'/'||job);

  8  end;

  9  /

 

7369/SMITH/CLERK

emp.empno%TYPE; 解析:首先它到emp表中去查找empno列 %TYPE返回其数据的数据类型。

 

%TYPE的好处:

1、 可移植性高(当我们对表的数据类型发生改变时,用户不必考虑定义变量类型)

2、 用户不必查看数据类型就可以定义变量能够存储检索的数据。

 

%ROWTYPE

   SQL> declare

  2      row_data emp%ROWTYPE;

  3  begin

  4     select * into row_data from emp where empno='7369';

  5     dbms_output.put_line(row_data.empno||'/'||row_data.ename||'/'||row_data.job);

  6  end;

  7  /

注意:如果定义了%rowtype类型的变量,该变量的结构与定义表的结构完全相同,查询时必须使用*或者列举全部的字段信息。

 

 

复合变量

    

   复合变量可以将不同的数据类型的多个值存储在一个单元中.由于复合数据类型可以有用户根据需要定义其结构,所以复合数据类型也称为自定义数据类型。

  PL/SQL提供了两种类型的复合数据类型:

1、 记录类型

在记录类型中可以存储多个标量值,与数据库中的行相似

2、 记录表类型

允许用户在程序代码中使用,以便存储多个行的数据。它只在程序运行期间有效。类似于程序代码中集合|数组。

 

记录类型:

   必须使用TYPE语句定义记录类型的语法声明如下:

TYPE record_name is record(

Field_name data_type[not null, :=default value]

………

)

     

%Rowtype不同之处是

   1%rowtype查询的是全部数据

   2、记录类型必须使用type语法格式声明

//案例

SQL> declare

  2     type empinfo is record(  //声明一个记录类型

  3       empno number(4),

  4       ename varchar2(10),

  5       job  varchar2(9)

  6     );

  7  

  8   emp_data  empinfo; //声明一个记录类型的变量

  9  begin

 10    select empno,ename,job into emp_data from emp where empno=7369; //查询的结果赋值给定义的变量

 11    dbms_output.put_line(emp_data.empno||'/'||emp_data.ename||'/'||emp_data.job);

 12  end;

 13  /

 

 

记录表类型

   它可以处理多个记录或多个行记录。

1、 为什么使用记录表类型呢?

 因为我们查询的数据的往往需要返回多行记录,所以需要记录表类型。

 

2、 定义记录表类型

TYPE table_name is table of data_type[not null]

     Index by binary_integer;//主键的索引

declare

   type table_emp is table of emp%rowtype //创建一个表 此表的类型与emp表的类型一致

   index by binary_integer;

  

   type table_text is table of varchar2(20) //创建一个表 此表具有一个varchar2列的简单表

   index by binary_integer;

   

   empt  table_emp; //声明记录表类型的变量

   tabtext table_text;

begin

 

 

案例:

SQL> declare

  2     type table_emp is table of emp%rowtype

  3     index by binary_integer;

  4     empt table_emp;

  5  begin

  6     empt(1).ename:='wangyi';

  7     dbms_output.put_line(empt(1).ename);

  8  end;

  9  /

 

//返回总记录

SQL> declare

  2     type table_emp is table of emp%rowtype

  3     index by binary_integer;

  4     empt table_emp;

  5  begin

  6     dbms_output.put_line(empt.count);

  7  end;

  8  /

 

0  //没有记录

 

 

//删除的操作

  表名.Delete(记录数);

//检索记录变量

First:获取第一个的索引

Next:下一个的索引 但是必须有参数

Last:最后一个的索引

SQL> declare

  2     type table_emp is table of emp%rowtype

  3     index by binary_integer;

  4     empt table_emp;

  5     i number(2):=1;

  6  begin

  7      while i<10

  8      loop

  9        empt(i).ename:='wangyi';

 10        i:=i+1;

 11      end loop;

 12  

 13     dbms_output.put_line(empt.count);

 14  

 15     empt.delete(2);

 16  

 17     dbms_output.put_line(empt.count);

 18  

 19     dbms_output.put_line(empt.first);

 20     dbms_output.put_line(empt.next(2));

 21     dbms_output.put_line(empt.last);

 22  end;

 23  /

 

9

8

1

3

9

 

 

<!--EndFragment-->

0
0
分享到:
评论

相关推荐

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

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

    Oracle脚本变量使用示例

    了解如何在Oracle脚本中使用变量是提升效率的关键。本篇将深入讲解Oracle脚本中的变量使用,通过实例来帮助你更好地理解和应用。 1. **变量声明** 在Oracle中,变量在PL/SQL块内进行声明。基本格式如下: ```sql ...

    Oracle变量定义详解.docx

    Oracle 变量定义详解 Oracle 变量定义是指在 PL/SQL 中定义变量的过程。...通过本文的学习,我们了解了 Oracle 变量定义的基本概念和语法,了解了各种变量类型的特点和使用方法,以及在 PL/SQL 脚本中的应用。

    oracle变量的总结

    - **变量的作用域**:在`DECLARE`部分定义的变量只能在其所在的`BEGIN...END`块中使用。 - **复合变量的使用**:复合变量如`%ROWTYPE`和`RECORD`能够有效地存储多个相关的值,适用于复杂的查询场景。 - **Oracle与...

    Oracle变量概念详解.pdf

    变量可以在 PL/SQL 脚本中使用,例如: ```sql declare v1 char; v2 varchar2(10); v3 number; begin v1 := 'ab'; v2 := 'abcd'; v3 := 100; dbms_output.put_line(v1); dbms_output.put_line(v2); dbms_...

    PL/SQL 基础.doc

    3) 表中的元素可以是复合类型; 4) KEY 没有必要是顺序的; 5) 当数据被插入表中的时候,表所需的空间就被分配了; 6. 变量的作用域和可见性 &lt;&lt;outer&gt;&gt; 1) 执行块里可以嵌入执行块; 2) 里层执行块的变量对外层不...

    Oracle记录类型变量[归类].pdf

    在Oracle数据库中,记录类型变量(Record Type Variables)是一种非常有用的特性,允许我们创建自定义的数据结构来存储和操作多列数据。以下是对记录类型变量的详细解释: 1. **Oracle记录类型变量**:记录类型变量...

    Oracle变量定义详解.pdf

    另一类是只能在 PL/SQL 脚本中使用的数据类型,如 boolean、type、rowtype、record 等。 在 Oracle 中,变量可以分为标量变量和复合变量。标量变量只能保存一个值,如 char、type 等;复合变量可以保存多个值,如 ...

    PLSQL编程03

    总结来说,理解并熟练运用PL/SQL中的自定义复合变量、`%TYPE`和`%ROWTYPE`是提升Oracle数据库编程能力的关键步骤。通过它们,我们可以更加高效地管理数据,编写出更加灵活和健壮的PL/SQL程序。在实际项目中,这些...

    Oracle PL SQL经典练习题1.docx

    这个程序块的关键是使用%type 属性声明变量,然后使用select into语句将数据从emp表中fetch 到变量中,最后使用dbms_output.put_line语句将结果输出。 4. 编写一个程序块,利用%rowtype 属性,接受一个雇员号,从...

    ORACLE数组使用方法

    ORACLE 数组使用方法 Oracle 数组是一种复杂的数据类型,可以存储多个元素,数组可以分为固定数组和可...Oracle 数组是一种功能强大且灵活的数据类型,可以用来存储大量的数据,并且可以通过索引来访问数组中的元素。

    oracle实验7-plsql编程基础.doc

    本实验旨在帮助学生掌握PL/SQL的基本概念和语法,包括变量的使用、%TYPE和%ROWTYPE特性,以及记录变量的操作。以下是对实验内容的详细解释: 一、PL/SQL程序块结构 PL/SQL程序块由声明部分(DECLARE)、执行部分...

    oracle游标变量和数据包

    根据提供的文件内容,本文将详细解释Oracle中的游标变量与程序包的概念及其应用。 ### 一、游标变量 #### 1. Refcursor 类型创建 在 Oracle 的 PL/SQL 环境中,Refcursor 是一种特殊的游标类型,它可以作为函数的...

    Oracle游标使用大全

    通过本文档的学习,您应该能够理解如何在Oracle PL/SQL中使用`SELECT INTO`语句、显式游标、隐式游标以及各种DML语句。此外,还介绍了如何利用`%TYPE`属性简化代码编写和维护。熟练掌握这些技术将大大提高您在Oracle...

    Oracle实验四.docx

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

    快速掌握Oracle数据库游标的使用方法

    记录变量可以使用 TYPE 命令和%ROWTYPE 定义,例如:DECLARE R_emp EMP%ROWTYPE;其中,R_emp 是记录变量名,EMP 是表名。 在使用游标时,需要注意关闭游标,以免资源泄露。关闭游标需要使用 CLOSE 语句,语法为:...

    PLSQL培训文档.ppt

    %TYPE 可以将变量类型定义为与数据库中表的字段相同的类型,当字段的数据类型变化时则变量的类型也相应的变化。%ROWTYPE 可以将变量类型定义为与具有相同类型的数据库行。 5. 内置 SQL 函数 PLSQL 提供了多种内置 ...

    Oracle 游标使用大

    此外,我们还探讨了%TYPE和%ROWTYPE属性的用法,这有助于更灵活地处理Oracle数据库中的数据类型。 总之,熟练掌握Oracle游标及其相关属性的使用对于提高数据库应用程序的效率至关重要。希望本文能够为正在学习...

    oracle PL-SQL 学习笔记1

    以上内容涵盖了Oracle PL-SQL中的一些基础且重要的知识点,包括变量声明与赋值、输出设置、表操作、使用`%TYPE`和`%ROWTYPE`、记录和集合的使用。通过掌握这些核心概念,开发者可以在Oracle数据库环境中更高效地编写...

Global site tag (gtag.js) - Google Analytics