zoukankan      html  css  js  c++  java
  • 【PL/SQL练习】复合变量: 可以一次传递多个值到变量中。

    1.案例: 通过record类型处理一行多列的数据

    复合变量--record 记录类型
    record:在一个变量中可以存储多个区域,每个区域可以是一个标量、记录或table (用于处理一行多列的信息)

    SQL> declare
      2     type emp_record  is record                          //定义变量类型为record
      3     ( v_ename emp.ename%type,
      4       v_sal   emp.sal%type,
      5       v_deptno emp.deptno%type
      6      );
      7  
      8     emp_rcd  emp_record ;
      9  
     10     begin
     11  
     12       select ename,sal,deptno into  emp_rcd from emp where empno=#
     13  
     14       dbms_output.put_line ('Employees name is: '||emp_rcd.v_ename);
     15       dbms_output.put_line ('Employees salary is: '||emp_rcd.v_sal);
     16       dbms_output.put_line ('Employees deparment number is: '||emp_rcd.v_deptno);
     17     end;

    2.通过%rowtype处理一行数据

    SQL> declare
      2     emp_rcd  emp%rowtype ;
      3  
      4     begin
      5  
      6       select * into  emp_rcd from emp where empno=#
      7  
      8       dbms_output.put_line ('Employees name is: '||emp_rcd.ename);
      9       dbms_output.put_line ('Employees salary is: '||emp_rcd.sal);
     10       dbms_output.put_line ('Employees hiredate is: '||to_char(emp_rcd.hiredate,'yyyy-mm-dd'));
     11       dbms_output.put_line ('Employees deparment number is: '||emp_rcd.deptno);
     12     end;

    3.案例:通过table类型变量处理一列多行的数据
    table 类型(处理单列多行数据)
    table:  相当于高级语言中的数组,但是需要注意的是在高级语言中数组的下标不能为负数,而pl/sql是可以为负数的,并且表元素的下标没有限制
             (处理单列多行数据)

    SQL> declare
      2   type emp_tab  is table of emp.ename%type            //定义变量类型为table类型
      3   index by binary_integer;                            //建立索引
      4  
      5   emp_table   emp_tab;
      6  
      7  begin
      8  
      9    select ename into emp_table(1) from emp where empno=7788;
     10     select ename into emp_table(2) from emp where empno=7369;
     11      select ename into emp_table(3) from emp where empno=7499;
     12  
     13    dbms_output.put_line('Employees 7788 name is: '||emp_table(1));
     14    dbms_output.put_line('Employees 7369 name is: '||emp_table(2));
     15    dbms_output.put_line('Employees 7499 name is: '||emp_table(3));
     16  end;
    SQL> declare
      2   type emp_tab  is table of emp.ename%type
      3   index by binary_integer;
      4  
      5    type emp_t  is table of emp.sal%type
      6   index by binary_integer;
      7  
      8   emp_table   emp_tab;
      9   emp_t_sal   emp_t;
     10  
     11  begin
     12  
     13    select ename into emp_table(1) from emp where empno=7788;
     14     select ename into emp_table(2) from emp where empno=7369;
     15      select ename into emp_table(3) from emp where empno=7499;
     16  
     17     select sal into emp_t_sal(1) from emp where empno=7788;
     18     select sal into emp_t_sal(2) from emp where empno=7369;
     19     select sal into emp_t_sal(3) from emp where empno=7499;
     20  
     21    dbms_output.put_line('Employees 7788 name is: '||emp_table(1));
     22    dbms_output.put_line('Employees 7369 name is: '||emp_table(2));
     23    dbms_output.put_line('Employees 7499 name is: '||emp_table(3));
     24  
     25      dbms_output.put_line('Employees 7788 salary is: '||emp_t_sal(1));
     26    dbms_output.put_line('Employees 7369 salary is: '||emp_t_sal(2));
     27    dbms_output.put_line('Employees 7499 salary is: '||emp_t_sal(3));
     28  end;

    4.在table类型里嵌套record类型 ,可以处理多行多列的数据

    SQL> declare
      2          type emp_table_type is table of emp%rowtype
      3           index by binary_integer;
      4            emp_tab emp_table_type;
      5  
      6        begin
      7          select * into emp_tab(1) from emp where empno=7788;
      8          select * into emp_tab(2) from emp where empno=7369;
      9         dbms_output.put_line('7788 Ename is: '||emp_tab(1).ename );
     10         dbms_output.put_line('7788 Salary is: '|| emp_tab(1).sal);
     11         dbms_output.put_line('7788 Deparment ID is: '||emp_tab(1).deptno);
     12         dbms_output.put_line('7369 Ename is: '||emp_tab(2).ename);
     13         dbms_output.put_line('7369 Salary is: '|| emp_tab(2).sal);
     14         dbms_output.put_line('7369 Deparment ID is: '||emp_tab(2).deptno);
     15        end;
  • 相关阅读:
    玩耍redis遇到的问题之记录
    哈勃望远镜--星柱图
    用js将从后台得到的时间戳(毫秒数)转换为想要的日期格式
    div水平居中
    hibernate和spring下载网址
    intellj idea 如何设置类头注释和方法注释(转载)
    转载:IT人高效的休息方式
    什么是REST?以及RESTful的实现
    easyui datagrid 获取记录数 页数 当前页
    font字体文件跨域
  • 原文地址:https://www.cnblogs.com/tomatoes-/p/6104233.html
Copyright © 2011-2022 走看看