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;

【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. bzoj2012: [Ceoi2010]Pin

    Description 给出N(2<=N<=50000)个长度为4的字符串,问有且仅有D(1<=D<=4)处不相同的字符串有几对. Input 第1行: N,D 以下N行每行一 ...

  2. VirtualBox 下USB 设备加载的步骤及无法加载的解决办法

    1. 将u盘插入电脑,在windows能够识别后,进入VirtualBox的选定要加载的虚拟机,选择设置——>选择usb设备项 2. 选择右边的第一或者是第二个图标,增加一个新的筛选器,第一个图 ...

  3. 什么是编解码器codec

    编解码器(英语:codec)指的是一个能够对一个信号或者一个数据流进行编解码操作的设备或者程序.这里指的变换既包括将信号或者数据流进行编码(通常是为了传输.存储或者加密)或者提获取到一个编码流的操作, ...

  4. JavaScript-CheckBox全选/反选

    //------------------------------------ // 全/反选 // param checkName checkbox的name属性 //---------------- ...

  5. PLSQL_性能优化系列12_Oracle Index Anaylsis索引分析

    2014-10-04 Created By BaoXinjian

  6. Mac下java编译乱码(适用于maven , ant)

    将~/.bash_profile中添加如下即可 export LC_ALL=en

  7. MongoDB基本命令的使用

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示 ...

  8. Python标准库03 路径与文件 (os.path包, glob包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 路径与文件的简介请参看Linux文件系统 os.path包 os.path包主要是 ...

  9. Good Sentences

    Wine in, truth out One is never too old to learn What is done can not be undone Time tries all thing ...

  10. 跨域请求 & jsonp

    0 什么是跨域请求 在一个域名下请求另外一个域名下的资源,就是跨域请求.example 1:比如:我当前的域名是http://che.pingan.com.我现在要去请求http://www.cnbl ...