%type保证内部变量保持与给该变量提供值的数据库字段有相等的数据类型(有相同的格式类型和长度),其语法要求:在%type前面有表名及字段名,用一个圆点将表名和字段名隔开;%rowtype有类似的功能,不同的是:它在内存中为相应表的每一个字段都建立一个内部变量,其语法要求:在%rowtype前加表名。例如: set serveroutpt on; declare dept emp.department_name%type; emp_row emp%rowtype; begin select max(salary) into emp_row.salary from emp; holder:=emp_row.salary; dbms_output.put_line(holder); --输出最大薪水 select department_name into dept from emp where salary=emp_row.salary; holder:=dept; dbms_output.put_line(holder); --输出最大薪水的部门名 end; / --说明:emp为某表;department_name,salary为该表的字段名使用%type,特别是%rowtype可以有效避免将内部变量定义得与相应数据库表的相应字段的类型或长度不一样,在程序中进行值的比较时出错。
set serveroutpt on;
declare
dept emp.department_name%type;
emp_row emp%rowtype;
begin
select max(salary) into emp_row.salary from emp;
holder:=emp_row.salary;
dbms_output.put_line(holder); --输出最大薪水
select department_name into dept from emp
where salary=emp_row.salary;
holder:=dept;
dbms_output.put_line(holder); --输出最大薪水的部门名
end;
/
--说明:emp为某表;department_name,salary为该表的字段名使用%type,特别是%rowtype可以有效避免将内部变量定义得与相应数据库表的相应字段的类型或长度不一样,在程序中进行值的比较时出错。