1. %TYPE的简单介绍
定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致,这时可以使用%TYPE。
使用%TYPE特性的优点在于:
- 所引用的数据库列的数据类型可以不必知道;
- 所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
这里仍然写两个%TYPE在记录类型中使用的例子
- 例子一
DECLARE
--使用%TYPE来找到一列的类型
TYPE t_record is RECORD(
t_no T_Employee.Fnumber%TYPE,
t_name T_Employee.Fname%TYPE,
t_age T_Employee.Fage%TYPE,
t_salary T_Employee.Fsalary%TYPE
);
-- 声明接收数据的变量
t_record1 t_record;
BEGIN
SELECT Fnumber,Fname,Fage,Fsalary
into t_record1
from T_Employee
where Fnumber ='SALES002';
Dbms_Output.put_line
(t_record1.t_no||'\'||t_record1.t_name||'\'||TO_CHAR(t_record1.t_age)||'\'||TO_CHAR(t_record1.t_salary));
END;
例子二
这个例子中的where条件使用一个预先定义的变量来确定
DECLARE
v_empno emp.empno%TYPE :=&no;
Type t_record is record (
v_name emp.ename%TYPE,
v_sal emp.sal%TYPE,
v_date emp.hiredate%TYPE);
Rec t_record;
BEGIN
SELECT ename, sal, hiredate INTO Rec FROM emp WHERE empno=v_empno;
DBMS_OUTPUT.PUT_LINE(Rec.v_name||'---'||Rec.v_sal||'--'||Rec.v_date);
END;
使用%ROWTYPE
**PL/SQL 提供%ROWTYPE操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。
使用%ROWTYPE特性的优点在于:
l 所引用的数据库中列的个数和数据类型可以不必知道;
l 所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。 **
一个例子
DECLARE
v_empno emp.empno%TYPE :=&no;
rec emp%ROWTYPE;
BEGIN
SELECT * INTO rec FROM emp WHERE empno=v_empno;
DBMS_OUTPUT.PUT_LINE('姓名:'||rec.ename||'工资:'||rec.sal||'工作时间:'||rec.hiredate);
END;