Oracle-33-变量%type、变量%rowtype、记录类型、记录表类型

2023-10-18 16:30

本文主要是介绍Oracle-33-变量%type、变量%rowtype、记录类型、记录表类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、%type变量

当用户事先并不知道检索的数据列的数据类型,可以使用%type定义变量。

比如:SQL>id emp.empno%type 就是将emp表中empno列的数据类型为变量id的数据类型

 

1:练习%type定义未知类型的变量。

解:用student表做:




二、%rowtype变量

%rowtype变量一次可以存储一行数据。

2:练习%rowtype变量。

解:注意下图中的程序:




三、复合类型变量(存储多行数据,可以理解为数组)

1.复合变量

与标量变量对应的就是复合变量。

 

2.复合变量分为以下两种类型

(1)记录类型

记录类型复合变量中可以存储多个标量值,结构与行相似;可以存储由多个列值组成的一行数据。

语法格式:


type 变量名 is record(

…………………………

…………………………

…………………………

);省略号部分是需要存储的数据

 

比如以下程序:


declare

      type emp_record is record(

           id emp.empno%type,

           name emp.empno%type

      );

a emp_record;——定义变量a,类型record,这里有人理解为给emp_record取别名(这有待斟酌)。

begin

      select empno,ename into a from emp where empno = 7935;

      dbms_output.put_line(a.id);

      dbms_output.put_line(a.name);

end;


【注意】type变量名 is record之后括号内的代码,与create table一样,除最后一行以外每行逗号结尾,最后一行末尾不要任何标点符号,最后一行输入完毕,回车,打上左括号、分号,回车结束。标点必须这么做,否则报错。

 

3:练习记录类型复合变量。

解:注意下图中的程序:




(2)记录表类型

该变量类型允许用户在代码中使用“表”,以便存储多个行数据。记录表类型是对记录类型的扩展,可以处理多个记录或多行数据

 

为什么使用记录表类型

答:因为一个记录类型变量只可以存储查询语句返回的一行数据,这就限制了select语句只能返回一行。如果select语句返回多行数据,那么就可以使用记录表类型。所以记录表类型它可以处理或是存储返回的多行数据。

 

语法格式:


type table_name is table of data_type [not null] index by binary_integer;


其中index by binary_integer是该记录表的下标数据类型(类似于数组下标)或称为记录表的长度,table_name是定义记录表名,data_type是定义记录表类型中存储数据的类型。

 

比如如下程序:


declare

      type table_a is table of varchar2(20) index by binary_integer;

      a table_a;

begin

      a(1) := ‘第一个变量值’;

      a(2) := ‘第二个变量值’;

      dbms_output.put_line(a(1));

      dbms_output.put_line(a(2));

end;

 

4:练习记录表类型的复合变量

解:注意下图中的程序:




记录表类型存储值的方式

有一个索引来标识这一行记录,图解如下:




【注意】

(1)索引从1开始,而不是从0开始;

 

记录表提供的方法几种:

1count返回记录表中记录的数量;

2delete删除记录表中的记录,比如a.delete(2)是删除记录表中的第二个值;

3first返回记录表中最小索引值;

4last返回记录表中最大的索引值;

5next返回记录表变量中的下一个索引,当使用该方法的时候,需要传递一个索引值。

 

5:练习以上记录表提供的方法。

解:注意下图中的程序:




由此可见,t.delete(2)删除记录表中第二个数据后记录表总长度不变,原来是5,现在还是5,且后面记录不会前进一个,即原来t(4)是d,现在还是d。

这篇关于Oracle-33-变量%type、变量%rowtype、记录类型、记录表类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233795

相关文章

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.