%type(引用型变量)
声明一个新的变量并引用另一个已经定义好的变量的数据类型(或者是表中某个列的数据类型), 新的变量的数据类型将和引用变量的数据类型一致。
当引用变量的数据类型改变时,新的变量数据类型也会随之改变。
如:
DECLARE
name t_student.name%type;
age t_student.age%type;
BEGIN
SELECT t.name,t.age INTO name,age
FROM t_student t
WHERE t.id = &ID;
DBMS_OUTPUT.put_line('学生姓名:' || t.name);
DBMS_OUTPUT.put_line('学生性别:' || t.age);
END;
即name,age的数据类型与t_student表中name,age列的数据类型一样
%rowtype (记录集型变量)
使用%ROWTYPE来定义一个表示表中一行记录的变量
声明一个新的变量,通过%rowtype引用一个表,那么这个新的变量将成为引用表中各个列的列名、数据类型都相同的行记录变量
(可以把这个新的变量想象成一个集合,通过集合名称.引用表的列名就可以实现列值的输出)
如:
DECLARE
student t_student%ROWTYPE;
BEGIN
SELECT * INTO student
FROM t_student
WHERE id=1;
DBMS_OUTPUT.PUT_LINE('姓名:' || student.name);
DBMS_OUTPUT.PUT_LINE('年龄:' || student.age);
END;
%type和%rowtype的区别
不同点:
- %type只能引用表中某一个列的数据类型
- %rowtype可以引用整张表的数据类型和列名
相同点:
- 引用变量的数据类型改变时,新的变量数据类型也会随之改变。