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. IntelliJ IDEA自动去掉行尾空格

    Settings→Editor→General 先选中Allow placement of caret after end of line 再修改Strip trailing spaces on Sa ...

  2. flash文件制作笔记

    在uboot串口台输入printenv 可以分区以及其他信息,如下 hisilicon # printenv bootdelay=1baudrate=115200ethaddr=00:00:23:34 ...

  3. Spring MVC 教程,快速入门,深入分析

    http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: ...

  4. M2的来源很简单

     http://bbs.tianya.cn/post-develop-412703-1.shtml M2的来源很简单,一部分是外汇占款,这个是我们国家的缺陷,如果外汇不管制,其实是不会发生增长人民币的 ...

  5. 黄聪:wordpress/wp-includes目录文件

    wp-includes/cache.php wp-includes/capabilities.php wp-includes/class-IXR.php:Incutio XML-RPC库.包括了 XM ...

  6. sbt设置

    配置中央仓库 vim ~/.sbt/repositories [repositories] local osc: http://maven.oschina.net/content/groups/pub ...

  7. 理解Socket编程【转载】

    “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...

  8. [JS]学习Javascript闭包(Closure)

    转自:阮一峰 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的 ...

  9. [MySQL] 同步一张表、复制过滤设置

    一.缘由 据测试要求,需要把线上一张股票信息的表实时同步到测试环境,那么干吧,这次不复制库,单独复制表. 二.解决办法 可以按照同步(复制)库的方法来,在salve端设置 my.cnf,replica ...

  10. LPC1768之中断

    一外中断:只有特定的4个外中断引脚, 1 在特定的引脚上,引脚功能要选对应的外中断功能 2设定的触发条件(高低电平.上升/下降沿) 3 NVIC设定,特定的通道. 二GPIO中断: 1只有GPIO0和 ...