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

转载 2012年03月28日 15:29:48
  1. 1. 使用%TYPE

在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量:

DECLARE

       v_FirstName VARCHAR2(20);

但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2(25))?那就会导致所有使用这个列的PL/SQL代码都必须进行修改。如果你有很多的PL/SQL代码,这种处理可能是十分耗时和容易出错的。

这时,你可以使用”%TYPE”属性而不是将变量类型硬性编码。

例如:

DECLARE

       v_FirstName students.first_name%TYPE;

通过使用%TYPE,v_FirstName变量将同students表的first_name列的类型相同(可以理解为将两者邦定起来)。

每次匿名块或命名块运行该语句块以及编译存储对象(过程、函数、包、对象类和触发器)时,就会确定该类型。

使用%TYPE是非常好的编程风格,因为它使得PL/SQL更加灵活,更加适应于对数据库定义的更新。

2. 使用%ROWTYPE

2.1 PL/SQL记录

PL/SQL记录类型类似于C语言中的结构,是一种复合类型,是用户自定义的。

记录提供了一种处理独立的但又作为一个整体单元相关的变量的机制。请看:

DECLARE

       v_StudentID NUMBER(5);

       v_FirstName VARCHAR2(20);

       v_LastName VARCHAR2(20);

3个变量在逻辑上是相互关联的,因为他们指向students表中不同的字段。如果为这些变量声明一个记录类型,那么他们之间的关系就十分明显,可作为一个单元进行处理。

DECLARE

       /*Define a record type to hold common student informationi*/

       TYPE t_StudentRecord IS RECORD(

              StudentID NUMBER(5),

              FirstName VARCHAR2(20),

              LastName VARCHAR2(20);  

       /*Declare a variable of this type.*/

       v_StudentInfo t_StudentRecord;

2.2 记录赋值

       可以用SELECT语句向记录赋值,这将会从数据库中检索数据并将该数据存储到记录中。注意的是,记录中字段应该和查询结果列表中的字段相匹配。

SELECT studentID,firstName,lastName

into v_StudentInfo

from students where studentID=32;

2.3 使用%ROWTYPE

PL/SQL中将一个记录声明为具有相同类型的数据库行的作法是很常见的。PL/SQL提供了%ROWTYPE运算符,使得这样的操作更为方便。

例如:

DECLARE

       v_StudentRecord students%ROWTYPE;

将定义一个记录,该记录中的字段将与students表中的列相对应。

PL/SQL中使用%TYPE和%ROWTYPE的区别

%TYPE:          定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型 相同,这时可以使用%TYPE。         使用%TYPE 特...
  • yuzongtao
  • yuzongtao
  • 2014年11月02日 13:12
  • 2092

ORACLE中%TYPE和%ROWTYPE的使用

ORACLE中%TYPE和%ROWTYPE的使用
  • liangweiwei130
  • liangweiwei130
  • 2014年07月25日 14:53
  • 47578

[Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用

  在PL/SQL程序中, 我们会遇到需要先从一个结果集中取出若干记录, 然后对每一条记录进行处理的情况, 最理想的做法是在一条SQL语句中完成, 但有时候因为需求的关系所以不一定能实现, 所以我们通...
  • huanghui22
  • huanghui22
  • 2007年05月24日 16:52
  • 5106

oracle存储过程中%type和%rowtype

oracle数据库中,存储过程中  %type和%rowtype常用来在PL/SQL中定义变量。 %type和%rowtype都是在database中定义的类型,使用%type和%...
  • TUBER727
  • TUBER727
  • 2013年08月27日 18:02
  • 3457

PLSQL的两个属性类型%type 和%rowtype

1.%TYPE定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。 说白了就是将查询到的某个列的结果要赋给 一个变量这会就用到了...
  • shaoduo
  • shaoduo
  • 2017年04月07日 10:17
  • 1111

Oracle中%TYPE和%ROWTYPE说明

%type 对应一个字段 %rowtype 对应一条记录(即2个以上字段) 1. 使用%TYPE 在许多情况下,变量应该拥有与表列相同的类型。例如,emp表的name列的类型为VARCHAR...
  • qq_26222859
  • qq_26222859
  • 2016年08月20日 11:11
  • 1616

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

Oracle PL/SQL中如何使用%TYPE和%ROWTYPE By tigertop 发表于 2005-11-22 14:39:00 1. 使用%TYPE 在许多情况下,PL/SQL变量...
  • bianfuxia
  • bianfuxia
  • 2006年08月02日 15:42
  • 1229

Oracle基本操作八:PL/SQL特殊数据类型%type %rowtype VARRAY TABLE RECORD

--%type %rowtype %type  前面必须有前缀 定义某个变量的数据与已存在的变量数据类型、某个列的数据类型相同。 好处:1.可能不知道数据表中字段的数据类型       2.数...
  • nipanlong001
  • nipanlong001
  • 2017年05月13日 21:29
  • 253

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

1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列...
  • guxianga
  • guxianga
  • 2007年11月12日 15:45
  • 544

ORACLE中record、varray、table和%type、%rowtype的使用详解

1     说明 1.1       RECORD   定义记录数据类型。它类似于C语言中的结构数据类型(STRUCTURE),PL/SQL提供了将几个相关的、分离的、基本数据类型的变量组成一...
  • xiaokui_wingfly
  • xiaokui_wingfly
  • 2015年05月24日 18:14
  • 3978
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle PL/SQL中如何使用%TYPE和%ROWTYPE
举报原因:
原因补充:

(最多只允许输入30个字)