PL/SQL复合变量
复合变量可以将不同数据类型的多个值存储在一个单元中。由于复合类型可以由用户自己根据需要定义其结构,所以复合数据类型也称为自定义数据类型。
在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;
/
PL/SQL复合变量相关推荐
- PL/SQL复合数据类型
--一.PL/SQL复合数据类型 --(一).PL/SQL记录 --1.定义PL/SQL记录 --(1).定义PL/SQL记录 --Grammar TYPE type_name IS RECORD(f ...
- Oracle入门(十四F)之PL/SQL定义变量
一.变量介绍 (1)变量的使用 可以使用变量: 临时存储数据 存储值的操作 可重用性 (2)PL/SQL中的变量处理 变量是: 在声明部分中声明和初始化 在可执行部分中使用和分配新值 变量可以是: 作 ...
- 基于oracle 的PL/SQL编程 -变量使用
1. 需要开启的服务: 本机安装的oracle ,默认是开机启动服务的,开机时间太慢,关闭了,需要手动打开: OracleDBConsoleorcl OracleOraDb10g_home1iSQL ...
- Oracle基础--PL/SQL编程--变量
一.PL/SQL变量概念 在Oracle中,有两种变量,一为普通变量(如char.varchar2.date.number.long等),二为特殊变量(引用型变量.记录型变量). 二.普通变量的声明 ...
- pl/sql 中变量定义范围的小例子:
开始 set serveroutput on; <<outer>>DECLAREbirthdate DATE;BEGINbirthdate:=TO_DATE('2012-05- ...
- 二十四、oracle pl/sql 变量
一.变量介绍 在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有: 1).标量类型(scalar) 2).复合类型(composite) --用于操作单条记录 3).参照类型(r ...
- Oracle PL/SQL编程之变量
注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型( ...
- pl/sql基础知识—定义并使用变量
n 介绍 在编写pl/sql程序是,可以定义变量和常量:在pl/sql程序中包括有: ①标量类型(scalar) ②复合类型(composite) ③参照类型(reference) ④lob(lar ...
- oracle 定义变量及使用方法,Oracle pl/sql变量定义和使用详解
一.变量介绍 在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有: 1).标量类型(scalar) 2).复合类型(composite) --用于操作单条记录 3).参照类型(r ...
最新文章
- Winio驱动在64位windows下无法使用的解决方法
- 华为诺亚方舟开源预训练模型“哪吒”,4项任务均达到SOTA
- 聚类分析和主成分分析
- 《转》 ImportError: No module named caffe 的解决方案
- php 开源 流量统计,5款开源的PHP网站流量统计应用程序
- mysql索引失效_导致MySQL索引失效的几种常见写法
- 浙大计算机硕士比本科985,二本出身的985研究生与985本科生,哪个更厉害?网友:差的太多!...
- 视觉SLAM笔记(1) 初识SLAM
- Android studio 2.3安装遇到的问题
- 安卓旅途之——开发数独(总结)
- 最简单的联想笔记本重装系统方法,一键重装系统图解
- 读完这篇系列文章,前端offer手到擒来!!!
- 【这是一个还没有被证实是否有效的小白修炼手册】数据结构入门第一课基本概念
- 移动最快apn服务器,中国移动修改APN为CMTDS提高4G网速
- [ 大道至简系列 ] 三分钟理解-1NF,2NF,3NF
- java课程设计qq_Java课程设计(qq聊天程序)
- Rainbow 开发 step1
- 工程伦理第十二章学习笔记2020最新
- other-note
- Python基础之pyautogui模块(详细总结鼠标键盘操作)