pl/sql 记录类型

本文详细介绍了在Oracle PL/SQL中如何定义和使用记录类型来提高代码效率和可读性。通过实例展示了记录类型的声明、使用以及如何将记录类型应用于查询结果的接收和数据保存,帮助开发者更好地理解和应用这一特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义记录类型

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值