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

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

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

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

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

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

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

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

  1. SQL> declare
  2. 2 type emp_table_type is table of emp%rowtype
  3. 3 index by binary_integer;
  4. 4 emp_tab emp_table_type;
  5. 5
  6. 6 begin
  7. 7 select * into emp_tab(1) from emp where empno=7788;
  8. 8 select * into emp_tab(2) from emp where empno=7369;
  9. 9 dbms_output.put_line('7788 Ename is: '||emp_tab(1).ename );
  10. 10 dbms_output.put_line('7788 Salary is: '|| emp_tab(1).sal);
  11. 11 dbms_output.put_line('7788 Deparment ID is: '||emp_tab(1).deptno);
  12. 12 dbms_output.put_line('7369 Ename is: '||emp_tab(2).ename);
  13. 13 dbms_output.put_line('7369 Salary is: '|| emp_tab(2).sal);
  14. 14 dbms_output.put_line('7369 Deparment ID is: '||emp_tab(2).deptno);
  15. 15 end;

【PL/SQL练习】复合变量: 可以一次传递多个值到变量中。的更多相关文章

  1. 二十四、oracle pl/sql 变量

    一.变量介绍在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有:1).标量类型(scalar)2).复合类型(composite) --用于操作单条记录3).参照类型(refer ...

  2. oracle pl/sql 变量

    一.变量介绍在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有:1).标量类型(scalar)2).复合类型(composite) --用于操作单条记录3).参照类型(refer ...

  3. PL/SQL变量和类型

    变量 在定义变量时一定要为其指定一个类型,类型可以是PL/SQL类型或SQL语言的类型,一旦变量的类型确定,那么变量中所能存储的值也就确定了,因此尽管变量的值会经常改变,但是值的类型是不可以变化的. ...

  4. pl/sql的介绍

    为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...

  5. PL/SQL数据类型

    在定义变量或常量时,必须要指定一个数据类型,PL/SQL是一种静态类型化的程序设计语言,静态类型化又称为强类型化,也就是说类型会在编译时而不是在运行时被检查,这样在编译时便能发现类型错误,以便增强程序 ...

  6. PL/SQL编程1-基础

    编写第一个存储过程 create or replace procedure test_pro1 is begin ','zydev'); end; / 查看错误 show error 执行存储过程 e ...

  7. Oracle PL/SQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE server和其它工具中了,近几年中很多其它的开发者和DBA開始使用PL/SQL,本文将讲述PL ...

  8. SQL PL/SQL语法手册

    SQL  PL/SQL语法手册 目   录 第一部分  SQL语法部分 3 一. CREATE TABLE 语句 3 二. CREATE SEQUENCE语句 5 三. CREATE VIEW语句 6 ...

  9. 【PL/SQL编程基础】

    [PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Cre ...

随机推荐

  1. Java AES加密

    Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return * ...

  2. PLSQL_数据泵定参数批量导入多表Expdp/Impdp Parfile(案例)

    2015-04-01 Created By BaoXinjian

  3. [Linux] Netstat 执行过慢,占CPU100%,原因查找

    一.缘由: 待续 二.解决办法: netstat -tlnp netstat -nap|grep pid ss |grep pid ss -s sar -u 1 10 strace -FfT -o n ...

  4. Javascript生成GUID

    GUID(全球唯一标识)是微软使用的一个术语,由一个特定的算法,给某一个实体,如Word文档,创建一个唯一的标识,GUID值就是这个唯一的标识码.除了.Net有专门的方法生成外,JS也可以生成GUID ...

  5. OAuth2.0_豆瓣登录_API错误返回码说明一览表[转]

    转自: http://blog.unvs.cn/archives/douban-oauth-2.0-error_code.html 在遵循OAuth2.0协议,开始制作豆瓣过程中,经常会遇到以下两个错 ...

  6. 【Java】图片高质量缩放类

    package com.test; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg. ...

  7. unset是不能清除保存在本地电脑上的cookie的,用于session就可以(弄了半天原来是这样)

    unset($_COOKIE["historyWord[$wordId]"]); 这样是不行的,unset只是将变量在脚本运行时注销,但是cookie是写在客户端的,下一次还是可以 ...

  8. Ext TreeGrid提交修改过的数据

    本打算将整个treestore的数据提交到服务器,但找来找去没有找到好的方法,在翻api的时候发现了getUpdatedRecords()方法,拿来一试,试出此方法可以拿到被修改过的record so ...

  9. tarjan 边双连通分量 对点进行分组 每组点都在一个双连通分量里边

    int dfn[N],low[N],id[N],s[N],p,num,t,son[N];//dfn记录dfs时间戳//low代表当前点到达的最小时间戳,id对点进行分组编号.num是时间戳//s临时存 ...

  10. [HDU 5074] Hatsune Miku (动态规划)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5074 题目大意是给你m个note,n个数,得分是v[a[i]][a[i+1]]的总和,如果说a[i]是 ...