特殊数据类型

目录

记录类型

定义一个记录类型 myrecord_type,用于存储 emp 数据表中的员工姓名和职务

%TYPE 类型

定义一个变量,存储数据表 emp 中编号为 7369 的员工姓名,并且显示出结果

%ROWTYPE 类型

声明一个用于存储 emp 数据表中每行记录的变量 var_row,并使用该变量显示员工的基本信息

记录表类型

定义一个记录表类型用于存储 emp 数据表中的数据,并显示


Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

除了以上几种基本的数据类型外,PL/SQL 语言还提供了 3 种特殊的数据类型,不过这 3 种特殊类型是在基本数据类型基础上建立的

记录类型

记录类型是一种结构化的数据类型,包含若干个成员分量的复合类型

类似于 C 语言中的结构,由用户自定义形成,记录类型提供了一种可以作为整体单元考虑的变量机制,整体单元内包含有若干成员分量

TYPE record_type IS RECORD(
Field1 DATATYPE [NOT NULL][:=DEFAULT VALUE],
Field2 DATATYPE [NOT NULL][:=DEFAULT VALUE],
......
Fieldn DATATYPE [NOT NULL][:=DEFAULT VALUE]);

其中 record_type 是要定义的记录类型的名称,Field1......Fieldn 是记录类型的成员分量名称,DATATYPE 是成员变量的数据类型。

这种记录类型需要在声明部分定义

定义一个记录类型 myrecord_type,用于存储 emp 数据表中的员工姓名和职务

%TYPE 类型

在 PL/SQL 语言中经常要用到 Oracle 数据库中的某些数据表的字段内容,这时必须要保证所定义的变量类型和数据表中字段的类型一致,这时可以使用 %TYPE 关键字来声明一个与指定字段相同的数据类型,使用的时候直接紧跟在指定字段的后面

声明一个与 emp 数据表中用户名 ename 字段的数据类型一样的变量 var_name

Var_name emp.ename%TYPE

 因为 emp 数据表中用户名 ename 字段的数据类型是 VARCHAR2(10),所以 %TYPE 此时声明的变量 var_name 的数据类型也为 VARCHAR2(10)

使用 %TYPE 类型来声明变量,用户不用查看数据表中各个字段的数据类型,就可以确保所定义的变量可以存储数据表中的数据,可以大大节省用户定义变量的时间,提高编程的效率,而且不会发生错误;通过这种定义变量的数据类型,可以理解为将数据变量与数据表中的字段绑定,如果数据表字段的定义经过修改,但是程序并不需要修改

定义一个变量,存储数据表 emp 中编号为 7369 的员工姓名,并且显示出结果

上面这个就是在声明部分定义了一个变量 Var_ename,其类型通过使用 %TYPE 来获取,与数据表中字段的类型一样,然后在程序中通过查询语句使用 INTO 子句将查询结果存储到 Var_ename

%ROWTYPE 类型

%TYPE 类型可以使变量获得数据表中字段的数据类型,使用 %ROWTYPE 类型可以使变量获得整个数据表记录的数据类型。

实际上可以把 %ROWTYPE 类型看成 %TYPE 类型与 RECORD 记录类型的结合,具有二者的优点,可以根据数据表中每行记录的结构定义一种特殊的记录数据类型,用来存储数据表中一行数据中各个字段的数据类型。

它的定义也是使用 %ROWTYPE 关键字来声明一个与指定数据表记录相同的数据类型,使用的时候直接紧跟在指定字段的后面

例如,声明一个用于存储 emp 数据表中每行记录的变量 var_row

Var_row emp %ROWTYPE

此时,使用 %ROWTYPE 类型所声明的变量 var_row 可以存储数据表 emp 中一行数据

声明一个用于存储 emp 数据表中每行记录的变量 var_row,并使用该变量显示员工的基本信息

记录表类型

前面介绍的记录类型变量里面每个分量只能存储一个数据,当把该记录类型变量用于存储查询语句的返回结果时,只能存储一条查询结果,如果查询语句返回多条记录的时候,就会出现错误。因此,需要另外一种数据类型—记录表类型,用于存储返回的多行数据

TYPE 记录表类型名称 IS TABLE OF 类型 INDEX BY BINARY_INTEGER

 记录表类型不会存储在数据库中,关键字 INDEX BY BINARY_INTEGER 指示系统创建一个主索引,以引用表变量中的特定行

在使用的时候,要先定义记录表类型的变量

记录表类型变量名 记录表类型名称

定义一个记录表类型用于存储 emp 数据表中的数据,并显示

在上面的程序中,声明部分定义了一个记录表类型,然后定义记录表类型变量 mytable,在程序主体部分,使用查询语句将查询的结果分别赋值到 mytable 记录表中,然后显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/781169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣每日一题】2908. 元素和最小的山形三元组 I

LC2908. 元素和最小的山形三元组 I 给你一个下标从 0 开始的整数数组 nums 。 如果下标三元组 (i, j, k) 满足下述全部条件&#xff0c;则认为它是一个 山形三元组 &#xff1a; i < j < k nums[i] < nums[j] 且 nums[k] < nums[j] 请你找出 nums 中 元素和最小…

【力扣hot100】160.相交链表

相交链表 给你两个单链表的头节点 headA和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回…

hibernate映射文件详解

hibernate映射文件 映射文件在.hbm.xml文件中编写 <?xml version"1.0" encoding"UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hiberna…

牛客练习赛123 A~C

A.炸鸡块哥哥的粉丝题 输出字符串的前 ⌈ n 2 ⌉ \lceil \frac{n}{2} \rceil ⌈2n​⌉ 个字符 void solve() {int n;string s;cin >> n >> s;cout << s.substr(0, (n 1) / 2); }B.智乃想考一道鸽巢原理 当小球总个数为奇数时&#xff0c;贪心的留下 1 个…

天梯算法Day3整理

浮点数解析 炸鱼题掠过 冲突值 题面 解析 方法一 —— 并查集 按照边值排序&#xff0c;然后按边值从大到小遍历&#xff0c;通过并查集判断能否将所有点无冲突地归于两个集合。在判断时&#xff0c;若有两个点不得不产生冲突&#xff0c;则输出这两个点之间的边值并结束。…

LeetCode Python - 81. 搜索旋转排序数组 II

目录 题目描述解法运行结果 题目描述 已知存在一个按非降序排列的整数数组 nums &#xff0c;数组中的值不必互不相同。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转 &#xff0c;使数组变为 […

<商务世界>《第28课 商务旅行的注意事项》

1 选择人气旺的酒店 酒店找一个旺气的地方。1是干净、整洁是最重要的。2是在选择酒店的时候尽量选择闹市&#xff0c;人口要集中的地方&#xff0c;这样入住率有保证&#xff0c;人多气场旺不至于发生一些灵异事件。而且人少屋多&#xff0c;也会让我们没有安全感。 2 避免无…

关于AllOriginSubtypes和AllDestinationSubtypes拓扑检查官方文档有误导

目录 1.问题描述&#xff1a; 2.有问题的代码&#xff1a; 3.修改能正确执行的代码 &#xff1a; 1.问题描述&#xff1a; 当两个要素类参与拓扑时&#xff0c;官方有一段代码&#xff0c;将拓扑规则加到拓扑中 ITopologyRule.AllOriginSubtypes Property Indicates if al…

好用还平价的挂耳式耳机有哪些?五款超平价品牌测评推荐

在数字化时代&#xff0c;耳机已经成为我们日常生活中不可或缺的一部分。而开放式耳机作为一种新兴趋势&#xff0c;以其独有的开放性设计和卓越的音质表现&#xff0c;正在悄然改变着人们的听音习惯。不同于传统的耳机产品&#xff0c;开放式耳机让音乐与外界环境相得益彰&…

【GSAP】ScrollTrigger插件的注意事项 | 用的好,非常流畅。用的不好,卡到爆炸的前端动画库

问题描述 调用gsap插件的ScrollTrigger的batch方法时 &#xff0c;有以下2种情况之一要进行垃圾回收处理&#xff0c;若不做处理会导致页面超级卡顿。 在动画运行完毕&#xff0c;不再使用动画时元素被删除时 例子 给当前动画一个id&#xff0c;是因为后期不用此动画时&…

软件测试工程师介绍

引言 在快速发展的软件行业中&#xff0c;软件测试工程师扮演着至关重要的角色。他们不仅是质量保证的第一道防线&#xff0c;也是确保软件产品满足用户需求、无缺陷地运行的关键。随着软件开发过程日益复杂和迭代速度的加快&#xff0c;软件测试工程师的工作变得更加重要但也…

我暂停了我的博士学位,尝试了一些不同的东西,然后带着一个新的视角回来了

警报在我耳边响起。静音后&#xff0c;我躺在床上&#xff0c;盯着天花板又看了30分钟。我继续攻读博士学位的动力正在减弱&#xff0c;这使得我越来越难以站起来&#xff0c;面对每一个新的疲惫的日子。我意识到&#xff0c;在我的计划剩下的 2 年里继续奋斗将冒着完全倦怠和崩…

简述如何系统地学习Python

随着人工智能、大数据和云计算等技术的快速发展&#xff0c;编程已经成为了当今社会中不可或缺的一项技能。Python作为一种高级编程语言&#xff0c;因其简洁明了的语法、强大的功能和广泛的应用领域&#xff0c;成为了许多初学者和专业人士的首选。那么&#xff0c;如何系统地…

微前端的使用和注意事项 - qiankun

一、为什么使用微前端 微前端架构旨在解决单体应用在一个相对长的时间跨度下&#xff0c;由于参与的人员、团队的增多、变迁&#xff0c;从一个普通应用演变成一个巨石应用(Frontend Monolith)后&#xff0c;随之而来的应用不可维护的问题。微前端的核心目标是将巨石应用拆解成…

4.C#对接微信Native支付(调用支付下单生成二维码接口)

在完成了前边几篇文章的操作后&#xff0c;我们接下来需要写实际的业务接口。调用微信的native下单接口。 手先看下官网的api文档&#xff0c;https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml 大概的流程是&#xff1a;商户后台系统先调用微信支付的Nativ…

Bun - NodeJS的替代

什么是Bun Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时。Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能&#xff0c;内置原生打包器 (native bundler)、转译器、task runner、npm 客户端&#xff0c;以及 fetch、WebSocket等 …

Matlab与数学计算

原文地址&#xff1a;Matlab与数学计算 - Pleasure的博客 下面是正文内容&#xff1a; 前言 这是一篇笔记。主要用于介绍MatLab的作用以及其作为数学工具的使用方法。 目的是总结学校课件复习自用&#xff0c;但是不可能像相关的书籍那么系统全面&#xff0c;力求简单明了。都…

pygame用自带函数绘制三角形 计算重心坐标

三角形重心坐标公式 三角形重心的坐标可以通过其三个顶点的坐标计算得出&#xff0c;公式为((X1X2X3)/3,(Y1Y2Y3)/3)。12 这是因为在平面直角坐标系中&#xff0c;重心的坐标是顶点坐标的算术平均数 中间黑点是重心坐标 import pygame from pygame.locals import * import sy…

面试题:Spring RESTful服务设计与控制器最佳实践

在设计Spring框架下的RESTful服务时&#xff0c;遵循一系列最佳实践可以帮助您创建出简洁、一致且易于维护的API。以下是几个关键的Spring RESTful服务设计与控制器的最佳实践&#xff1a; ### 1. 资源导向设计 (Resource-Oriented Design) - 定义资源RESTful API的设计…

scanf/fscanf/sscanf和printf/fprintf/sprintf的使用和对比

一&#xff1a;函数的对比 scanf&#xff1a;从标准输入流中读取格式化数据&#xff08;通常是键盘&#xff09; printf&#xff1a;将格式化数据输出到标准输出流&#xff08;通常是屏幕&#xff09; fscanf&#xff1a;适用于所有输入流的格式化输入函数&#xff08;一般从…