• 记录类型(学习笔记)


    定义记录类型

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

    示例一、记录类型接收查询返回结果

    --使用记录类型接收查询返回结果
    DECLARE
      V_ENO EMP.EMPNO%TYPE;
      TYPE EMP_TYPE IS RECORD( --定义记录类型
        ENAME    EMP.ENAME%TYPE,
        JOB      EMP.JOB%TYPE,
        HIREDATE EMP.HIREDATE%TYPE,
        SAL      EMP.SAL%TYPE,
        COMM     EMP.COMM%TYPE
        
        );
      V_EMP EMP_TYPE; --定义一个指定的复合类型变量
    BEGIN
      V_ENO := &ENO;
      SELECT ENAME, JOB, HIREDATE, SAL, COMM
        INTO V_EMP
        FROM EMP
       WHERE EMPNO = V_ENO;
      DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' 员工编号:' || V_ENO || ' 姓名:' ||
                           V_EMP.ENAME || ' 职位:' || V_EMP.JOB || ' 入职日期:' ||
                           TO_CHAR(V_EMP.HIREDATE, 'yyyy-mm-dd') || ' 基本工资:' ||
                           V_EMP.SAL || ' 佣金:' || NVL(V_EMP.COMM, 0));
      EXCEPTION
        WHEN OTHERS THEN
          raise_application_error(-20009,'此员工信息不存在');
    
    END;

    示例二、

    DECLARE
         TYPE dept_type IS RECORD(
              deptno           dept.deptno%TYPE:=99,--定义默认值
              dname            dept.dname%TYPE,
              loc               dept.loc%TYPE
         );
         v_dept         dept_type;
    BEGIN
             v_dept.dname:='TT';         --为记录类型成员赋值
             v_dept.loc:='上海';
             dbms_output.put_line('部门编号:'||v_dept.deptno||' 部门名称:'||v_dept.dname||' 部门位置:'||v_dept.loc);
    END;

    示例三、定义嵌套的记录类型

    DECLARE
      TYPE DEPT_TYPE IS RECORD(
        DEPTNO DEPT.DEPTNO%TYPE := 99, --定义默认值
        DNAME  DEPT.DNAME%TYPE,
        LOC    DEPT.LOC%TYPE);
      TYPE EMP_TYPE IS RECORD( --定义记录类型
        EMPNO    EMP.EMPNO%TYPE,
        ENAME    EMP.ENAME%TYPE,
        JOB      EMP.JOB%TYPE,
        HIREDATE EMP.HIREDATE%TYPE,
        SAL      EMP.SAL%TYPE,
        COMM     EMP.COMM%TYPE,
        DEPT     DEPT_TYPE);
      V_EMP EMP_TYPE;
    BEGIN
      SELECT E.EMPNO,
             E.ENAME,
             E.JOB,
             E.HIREDATE,
             E.SAL,
             E.EMPNO,
             D.DEPTNO,
             D.DNAME,
             D.LOC
        INTO V_EMP.EMPNO,
             V_EMP.ENAME,
             V_EMP.JOB,
             V_EMP.HIREDATE,
             V_EMP.SAL,
             V_EMP.COMM,
             V_EMP.DEPT.DEPTNO,
             V_EMP.DEPT.DNAME,
             V_EMP.DEPT.LOC
        FROM EMP E, DEPT D
       WHERE E.EMPNO = D.DEPTNO(+)
         AND EMPNO = &EMPNO;
      DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' 员工编号:' || V_EMP.EMPNO || ' 姓名:' ||
                           V_EMP.ENAME || ' 职位:' || V_EMP.JOB || ' 入职日期:' ||
                           TO_CHAR(V_EMP.HIREDATE, 'yyyy-mm-dd') || ' 基本工资:' ||
                           V_EMP.SAL || ' 佣金:' || NVL(V_EMP.COMM, 0));
      DBMS_OUTPUT.PUT_LINE('部门编号:' || V_EMP.DEPT.DEPTNO || ' 部门名称:' ||
                           V_EMP.DEPT.DNAME || ' 部门位置:' || V_EMP.DEPT.LOC);
    END;

    示例四、增加一条新的记录

    DECLARE
      TYPE DEPT_TYPE IS RECORD(
        DEPTNO DEPT.DEPTNO%TYPE, --定义默认值
        DNAME  DEPT.DNAME%TYPE,
        LOC    DEPT.LOC%TYPE
        );
        V_DEPT DEPT_TYPE;
    BEGIN
      V_DEPT.deptno:=&deptno;
      V_DEPT.DNAME:='&dname'; --为记录类型成员赋值
      V_DEPT.LOC:='&loc';
     INSERT INTO dept VALUES v_dept;                   --直接插入记录类型 
    END;

    示例五、修改一条记录

    DECLARE
      TYPE DEPT_TYPE IS RECORD(
        DEPTNO DEPT.DEPTNO%TYPE, --定义默认值
        DNAME  DEPT.DNAME%TYPE,
        LOC    DEPT.LOC%TYPE
        );
        V_DEPT DEPT_TYPE;
    BEGIN
      V_DEPT.deptno:=&deptno;
      V_DEPT.DNAME:='&dname'; --为记录类型成员赋值
      V_DEPT.LOC:='&loc';
    UPDATE dept SET ROW=v_dept WHERE deptno=v_dept.deptno;
    EXCEPTION
      WHEN OTHERS THEN
        dbms_output.put_line('没有这个部门');
       
    END;
     
  • 相关阅读:
    Eclipse安装Hadoop插件
    (转)Ubuntu14.0.4中hadoop2.4.0伪分布模式配置
    Hadoop--DataNode无法启动
    启动与关闭hadoop
    hadoop中执行命令时发生错误
    strings命令
    Deriving data from ElasticSearch Engine
    elasticsearch data importing
    reading words in your computer and changing to female voice, linux festival text2wave saving wav files
    DDNS client on a Linux machine
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4220279.html
走看看 - 开发者的网上家园