%TYPE是不是只能用来定义某个字段而%ROWTYPE可以用来定义一行?这样就不需要一个字段一个字段的去定义,方便简洁?如果是这样的话,那为什么还需要%TYPE这种类型呢?都用%ROWTYPE这个类型好了啊

解决方案 »

  1.   

    %TYPE提供变量或列的数据类型 
    在对引用到数据库中的列的变量进行声明时有用 
    需要知道列的确切数据类型 
    如果列定义发生变化,则变量的数据类型在运行时也将随之更改 
    oldfare fare.first_fare%TYPE;
    %ROWTYPE当记录变量具有与表或视图中的行或从游标获取的行相同的结构时有用 
    记录中的字段具有与表/视图中的列相同的名称和数据类型 
    emp_rec employee%ROWTYPE;
    可以使用下列属性引用特定字段 
    emp_rec.emp_num;
      

  2.   

    一般来讲
    %type用来定义变量的类型跟一个数据库表中的一个字段类型一样
    列如:v_employee_id employee.employee_id%type;
    %rowtype用来定义变量的类型跟一个数据库表中的所有字段类型一样
    列如:v_employee employee%rowtype;有的时候我们只需要引用其中的一个字段,这样的话,第一个%type就可以直接引用,但是如果用第二种情况的话,就需要v_employee.employee_id相对第一个来说要复杂点,而且也会增加数据库的一些不必要的开销
    所以%type还是有必要的