Oracle基本知识:%TYPE 和 %ROWTYPE

  1. 使用%TYPE数据库

       声明一个类型动态改变的变量,将该变量的类型与表的某列的类型进行动态绑定,即表列的类型改变,则该变量类型也改变。数组

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

DECLARE编码

       v_FirstName VARCHAR2(20);orm

    可是若是first_name列的定义改变了会发生什么(好比说表改变了,first_name如今的类型变为VARCHAR2(25))?那就会致使全部使用这个列的PL/SQL代码都必须进行修改。这时,你可使用”%TYPE”属性而不是将变量类型硬性编码。io

例如:ast

    DECLAREform

           v_FirstName students.first_name%TYPE;变量

    经过使用%TYPE,v_FirstName变量将同students表的first_name列的类型相同(能够理解为将二者邦定起来)。
2. %ROWTYPE   相似于记录数据

     在PL/SQL中将一个记录声明为具备相同类型的数据库行。PL/SQL提供%ROWTYPE运算符实现该操做。

例如:DECLARE    v_RoomRecord rooms%ROWTYPE;

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

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_RoomRecord rooms%ROWTYPE;

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

相关文章
相关标签/搜索