变量 表1.字段1%TYPE
------------------
变量的类型和大小 和 表1.字段1 一样
变量 表%ROWTYPE
---------------------
行类型,变量如同一个表来操作.(一般由于游标)open 打开游标
fetch 游标 into 行变量行变量.字段1
行变量.字段2
...
保存一个记录(一行)数据.
------------------
变量的类型和大小 和 表1.字段1 一样
变量 表%ROWTYPE
---------------------
行类型,变量如同一个表来操作.(一般由于游标)open 打开游标
fetch 游标 into 行变量行变量.字段1
行变量.字段2
...
保存一个记录(一行)数据.
而%rowtype是指一条记录的各个字段的类型
后者可用 变量.字段 来引用
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;
中的a是什么意思?
去掉可以么?
select * from fnd_user where fnd_user.user_id=1 --如果表名要是很长的话输起来很麻烦,而且有的关联的表中有一样的字段名,不这样的话就不知道是哪一个表了,
%ROWTYPE也可以用游标名来定义,这样的话就必须要首先声明游标:
那么,表名%TYPE和游标名%TYPE有什么区别?在用法上
简单些:表.字段%type表示变量类型与字段类型一样
%rowtype变量相当于表的一行。