记录,也就是 record ,在 PLSQL 中用于存多个列或一个列,但只能存一行,多行必须游标 + 循环,其中有两个重要的东西联动:
%rowtype ,用于查所有列,也就是 select *
---%rowtype 的使用,存所有的列 ---
declare v_emp emp%rowtype; /*%左边的emp指的是表*/ begin select * into v_emp from emp where empno = 7369; dbms_output.put_line(v_emp.ename || ' ' || v_emp.sal); end;
%type ,用于查指定的列
---%type 的使用,用于存指定的列 ---
declare v_name emp.ename%type; v_sal emp.sal%type; begin select ename, sal into v_name, v_sal from emp where empno = 7369; dbms_output.put_line(v_name || ' ' || v_sal); end;
他们两者不像之前需要自己临时在 PLSQL 中定义数据类型,而是直接沿用的数据库中列的数据类型。
那么怎么才能不要 select * ,又能方便点把需要的列放一起呢,引用出了 record :
---%type 和 record 的联动使用 ---
declare type ename_sal is record( ename emp.ename%type, sal emp.sal%type); v_ename_sal ename_sal; begin select ename, sal into v_ename_sal from emp where empno = 7369; dbms_output.put_line(v_ename_sal.ename || ' ' || v_ename_sal.sal); end;
