变量  表1.字段1%TYPE
------------------
变量的类型和大小 和 表1.字段1 一样
变量 表%ROWTYPE
---------------------
行类型,变量如同一个表来操作.(一般由于游标)open 打开游标
fetch 游标 into 行变量行变量.字段1
行变量.字段2
...
保存一个记录(一行)数据.

解决方案 »

  1.   

    %type 是指某个字段的类型
    而%rowtype是指一条记录的各个字段的类型
    后者可用  变量.字段  来引用
      

  2.   

    declare
        i number;  --这里的number是类型
        u_name fnd_user.user_name%type; 
            --这里的u_name定义将用来存放表fnd_user中选出的user_name,
            --那就将该变量定义成fnd_user表中user_name一样的类型.
        cursor c is select * from fnd_user;
        u_cur fnd_user%rowtype
            --将u_cur定义成和fnd_user表中一行的数据类型一直以接收该行类型
    begin
        select a.user_name into u_name from fnd_user a where a.user_id=1;
            --注意上面的用法
        open c;
        loop    
            fetch c into u_cur;  --注意这里的用法
            exit when c%notfound;
              --在这里做一些其他的操作;
        end loop;
        close c;
    end;
      

  3.   

    to dinya2003select a.user_name into u_name from fnd_user a where a.user_id=1;
    中的a是什么意思?
    去掉可以么?
      

  4.   

    a 代表别名,为的是方便和区别.
    select * from fnd_user where fnd_user.user_id=1  --如果表名要是很长的话输起来很麻烦,而且有的关联的表中有一样的字段名,不这样的话就不知道是哪一个表了,
      

  5.   

    I see 3Q
    %ROWTYPE也可以用游标名来定义,这样的话就必须要首先声明游标:
    那么,表名%TYPE和游标名%TYPE有什么区别?在用法上
      

  6.   

    以上说的都不错 
    简单些:表.字段%type表示变量类型与字段类型一样
    %rowtype变量相当于表的一行。
      

  7.   

    无论 %type还是%rowtype都是自动匹配类型。把握了这一点就简单了。表.%rowtype和游标.%rowtype作用相同,都是指定行记录各字段类型自动匹配。