pl/sql 记录类型

定义记录类型

TYPE 类型名称 IS RECORD(
	成员名称 数据类型[[NOT NULL][:= 默认值] 表达式],
	....
);

使用记录类型返回接受查询结果

SQL> DECLARE
  2     v_emp_empno emp.empno%TYPE;
  3     v_emp_ename emp.ename%TYPE;
  4     v_emp_job emp.job%TYPE;
  5     v_emp_hiredate emp.hiredate%TYPE;
  6     v_emp_sal emp.sal%TYPE;
  7     v_emp_comm emp.comm%TYPE;
  8  BEGIN
  9     v_emp_empno:=&inputempno;
 10     SELECT ename,job,hiredate,sal,comm INTO
 11     v_emp_ename,v_emp_job,v_emp_hiredate,v_emp_sal,v_emp_comm
 12     FROM emp WHERE empno=v_emp_empno;
 13     DBMS_OUTPUT.put_line('雇员编号:'||v_emp_empno||',姓名:'||v_emp_ename||'.职业:'
 14     ||v_emp_job||',雇佣日期:'||TO_CHAR(v_emp_hiredate,'yyyy-mm-dd')||',基本工资:'
 15     ||v_emp_sal||',佣金:'||NVL(v_emp_comm,0));
 16  EXCEPTION
 17          WHEN OTHERS THEN
 18       RAISE_APPLICATION_ERROR(-20007,'此雇员不存在!');
 19  END;
 20  /
输入 inputempno 的值:  7369
原值    9:      v_emp_empno:=&inputempno;
新值    9:      v_emp_empno:=7369;
雇员编号:7369,姓名:SMITH.职业:CLERK,雇佣日期:1980-12-17,基本工资:800,佣金:0

PL/SQL 过程已成功完成。

用户自定义类型

SQL> DECLARE
  2     TYPE dept_type IS RECORD(
  3     deptno dept.deptno%TYPE:=80,
  4     dname  dept.dname%TYPE,
  5     loc   dept.loc%TYPE
  6     );
  7     v_dept dept_type;
  8  BEGIN
  9     v_dept.dname:='abx';
 10     v_dept.loc:='china';
 11     DBMS_OUTPUT.put_line('部门编号:'||v_dept.deptno||'名称:'||v_dept.dname||'位置:'||v_dept.loc);
 12  END;
 13  /
部门编号:80名称:abx位置:china

PL/SQL 过程已成功完成。

使用记录类型保存数据

原始数据

SQL> select *from dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        80 chais                        sddsf
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON
SQL> select *from dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        80 hello,world                  china
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON
posted @ 2018-11-13 21:53  webzom  阅读(148)  评论(0)    收藏  举报