复合变量可以将不同数据类型的多个值存储在一个单元中。由于复合类型可以由用户自己根据需要定义其结构,所以复合数据类型也称为自定义数据类型。

在PL/SQL中,使用%TYPE声明的变量类型与数据表中字段的数据类型相同,当数据表中字段数据类型修改后,PL/SQL程序中相应变量的类型也自动随之改变。

如EMP表中有一个ENAME字段,其数据类型为VARCHAR2(30),声明变量v_name用来存放ENAME字段的数据,声明如下:

v_name emp.ename%TYPE;

则变量v_name的数据类型始终与ENAME字段的类型保持一致,即VARCHAR2(30),当ENAME字段的数据类型改为VARCHAR2(50)时,v_name变量的数据类型也自动修改为VARCHAR2(50)。

DECLARE

v_name emp.ename%TYPE;

BEGIN

SELECT ename INTO v_name FROM emp

WHERE empno=7788;

DBMS_OUTPUT.PUT_LINE(v_name);

END;

/

PL/SQL提供了%ROWTYPE来存储一行数据。例如,要定义DEPT表中的一行记录,并且数据类型和每列类型一致可以使用%ROWTYPE,声明如下:

dept_record dept%ROWTYPE;

下面使用%ROWTYPE类型的变量存储DEPT表中的一行数据,示例如下:

DECLARE

v_dept dept%ROWTYPE;

BEGIN

SELECT * INTO v_dept FROM dept

WHERE deptno=30;

DBMS_OUTPUT.PUT_LINE(v_dept.deptno);

DBMS_OUTPUT.PUT_LINE(v_dept.dname);

DBMS_OUTPUT.PUT_LINE(v_dept.loc);

END;

/

记录类型与数据库中的行结构非常类似,使用记录类型定义的变量可以存储由多个列值组成的一行数据。当使用记录类型的变量时,首先需要定义记录的结构,然后定义记录类型的变量。定义记录类型时必须使用TYPE语句指出将在记录中包含的字段及其数据类型,语法如下:

DECLARE

TYPE emp_record_type IS RECORD(

name emp.ename%TYPE,

salary emp.sal%TYPE,

dno emp.deptno%TYPE);  --自定义变量类型emp_record_type

emp_record emp_record_type;  --定义emp_record_type类型的变量emp_record

BEGIN

SELECT ename,sal,deptno INTO emp_record

FROM emp WHERE empno=7788;  --查询ename,sal,deptno赋值给变量emp_record

DBMS_OUTPUT.PUT_LINE(emp_record.name);

END;

/

--------------------------------------------------

DECLARE

TYPE emp_record_type IS RECORD(

name emp.ename%TYPE,

salary emp.sal%TYPE,

dno emp.deptno%TYPE);  --自定义变量类型emp_record_type

emp_record emp_record_type;  --定义emp_record_type类型的变量emp_record

BEGIN

SELECT ename,sal INTO emp_record.name,epm_record.salary

FROM emp WHERE empno=7788;  --查询ename,sal,deptno赋值给变量emp_record

DBMS_OUTPUT.PUT_LINE(emp_record.name);

END;

/

本文转自yeleven 51CTO博客,原文链接:http://blog.51cto.com/11317783/1879799

PL/SQL复合变量相关推荐

  1. PL/SQL复合数据类型

    --一.PL/SQL复合数据类型 --(一).PL/SQL记录 --1.定义PL/SQL记录 --(1).定义PL/SQL记录 --Grammar TYPE type_name IS RECORD(f ...

  2. Oracle入门(十四F)之PL/SQL定义变量

    一.变量介绍 (1)变量的使用 可以使用变量: 临时存储数据 存储值的操作 可重用性 (2)PL/SQL中的变量处理 变量是: 在声明部分中声明和初始化 在可执行部分中使用和分配新值 变量可以是: 作 ...

  3. 基于oracle 的PL/SQL编程 -变量使用

    1. 需要开启的服务:  本机安装的oracle ,默认是开机启动服务的,开机时间太慢,关闭了,需要手动打开: OracleDBConsoleorcl OracleOraDb10g_home1iSQL ...

  4. Oracle基础--PL/SQL编程--变量

    一.PL/SQL变量概念 在Oracle中,有两种变量,一为普通变量(如char.varchar2.date.number.long等),二为特殊变量(引用型变量.记录型变量). 二.普通变量的声明 ...

  5. pl/sql 中变量定义范围的小例子:

    开始 set serveroutput on; <<outer>>DECLAREbirthdate DATE;BEGINbirthdate:=TO_DATE('2012-05- ...

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

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

  7. Oracle PL/SQL编程之变量

    注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型( ...

  8. pl/sql基础知识—定义并使用变量

    n  介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...

  9. oracle 定义变量及使用方法,Oracle pl/sql变量定义和使用详解

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

最新文章

  1. Winio驱动在64位windows下无法使用的解决方法
  2. 华为诺亚方舟开源预训练模型“哪吒”,4项任务均达到SOTA
  3. 聚类分析和主成分分析
  4. 《转》 ImportError: No module named caffe 的解决方案
  5. php 开源 流量统计,5款开源的PHP网站流量统计应用程序
  6. mysql索引失效_导致MySQL索引失效的几种常见写法
  7. 浙大计算机硕士比本科985,二本出身的985研究生与985本科生,哪个更厉害?网友:差的太多!...
  8. 视觉SLAM笔记(1) 初识SLAM
  9. Android studio 2.3安装遇到的问题
  10. 安卓旅途之——开发数独(总结)
  11. 最简单的联想笔记本重装系统方法,一键重装系统图解
  12. 读完这篇系列文章,前端offer手到擒来!!!
  13. 【这是一个还没有被证实是否有效的小白修炼手册】数据结构入门第一课基本概念
  14. 移动最快apn服务器,中国移动修改APN为CMTDS提高4G网速
  15. [ 大道至简系列 ] 三分钟理解-1NF,2NF,3NF
  16. java课程设计qq_Java课程设计(qq聊天程序)
  17. Rainbow 开发 step1
  18. 工程伦理第十二章学习笔记2020最新
  19. other-note
  20. Python基础之pyautogui模块(详细总结鼠标键盘操作)

热门文章

  1. KVM半虚拟化驱动--virtio概述和基本原理(四)
  2. 常见算子使用_spark快速入门(二)spark粗略流程简述及常见名词解释
  3. Nacos系列:基于Nacos的注册中心
  4. MyISAM与InnoDB的索引实现
  5. 一意孤行,360继续奉行互联网恐怖主义
  6. 基于图结构的计算分析和实现
  7. hexo + Github 搭建问题综述
  8. SQL语句order by两个字段同时排序
  9. [Android编程心得]Debug的一些技巧
  10. DB2数据导入导出的小结