百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

PL/SQL数据类型介绍,特别是引用数据类型%type、%rowtype使用

sinye56 2024-10-11 17:34 4 浏览 0 评论

PL/SQL数据类型不但支持Oracle SQL中的数据类型,还有自身自带的数据类型。学习任何一门语言,都需要了解一下该语言支持哪些数据类型,PL/SQL数据类型可以分为标量数据类型和引用数据类型两大部分。

标量数据类型

标量数据类型的变量只有一个值,且内部没有分量。标量数据类型包括数字型,字符型,日期型和布尔型。这些类型有的是 Oracle SQL 中有的数据类型,有的是 PL/SQL 自身附加的数据类型。下面我们来详细介绍一下常用的的标量数据类型:

1、数值类型:主要用来存储数值类型的数据。常用的有NUMBER、PLS_INTEGER、BINARY_INTEGER和SIMPLE_INTEGER类型。

NUMBER:可以存储小数和整数类型数据,格式为NUMBER(p,s),其中p表示的是精度(既是位数的长度),s表示的是小数点后的位数。例如:number(3,2)表示的范围-9.99—9.99。

PLS_INTEGER、BINARY_INTEGER、SIMPLE_INTEGER:主要用来存储整数类型,它们存储整数的范围都是-(2^31)...(2^31-1)。但是BINARY_INTEGER发生内存溢出的时候会给它分配一个number类型的数据,而PLS_INTEGER会直接抛异常报错,SIMPLE_INTEGER是PLS_INTEGER的一个子类型,它不允许存在NULL值数据。

2、字符类型:用来存储单个字符或字符串。主要有的类型有如下类型:

CHAR类型:固定长度的字符串,CHAR(n):默认长度是1,当字符串长度小于n时,会自动右补空格,所以在取数据的时候要注意补空格。

VARCHAR2类型:该类型存储可变长度的字符串VARCHAR2(n),最大存储的长度为4000个字节。当字符串长度小于n时,不会补齐空格。

LONG类型:该类型存储可变长度的字符串,不同于VARCAHR2类型,它对于字段的存储长度可达2G,但是作为PL/SQL变量,和VARCHAR2一样,只能存储最大32767字节。

3、时间类型:主要和SQL中的时间类型一致,有DATE和TIMESTAMP两种时间类型。

4、布尔类型:PL/SQL程序中的逻辑判断的值有:TRUE、FALSE、NULL值。

引用数据类型

引用数据类型是PL/SQL程序语言特有的数据类型,是用来引用数据库当中的某一行或者某个字段作为数据类型的声明。其中有两种引用类型:%TYPE和%ROWTYPE。

%TYPE类型:

引用数据库中表的某列的类型作为某变量的数据类型,也可以直接引用PL/SQL程序中某个变量作为新变量的数据类型。下面我们通过一个案例做下测试:

declare
ls_stuname stuinfo.stuname%type;--通过学生姓名字段声明ls_stuname
begin
 select t.stuname into ls_stuname
 from student.stuinfo t
 where t.stuid = 'SC201801006'; 
 dbms_output.put_line(ls_stuname);
exception
 when no_data_found then
 dbms_output.put_line('该学生在学生信息表中找不到');
end;

结果如下:

% ROWTYPE 类型:?

%ROWTYPE类型是PL/SQL程序引用数据库表中的一行作为数据类型,即 RECORD 类型(记录类型)表示一条数据记录。类似java程序当中的对象的实例。可以使用“.”来访问记录中的属性。下面我们通过实例来做下测试:

declare
ls_stuinfo stuinfo%rowtype;
xsjbxx varchar2(50);
begin
 select t.* into ls_stuinfo
 from stuinfo t
 where t.stuid='SC201801006';
 xsjbxx:='姓名:' ||ls_stuinfo.stuname || ' 学号:' ||ls_stuinfo.stuid || ' 年龄:' ||ls_stuinfo.age;
 dbms_output.put_line(xsjbxx);
exception
 when no_data_found then
 dbms_output.put_line('该学生在学生信息表中找不到');
end;

案例中我们通过查询学生信息表(stuinfo)中学号“SC201801006”的数据记录赋值给ls_stuinfo(%rowtype)变量,结果如下:


相关推荐

Linux基础知识之修改root用户密码

现象:Linux修改密码出现:Authenticationtokenmanipulationerror。故障解决办法:进入单用户,执行pwconv,再执行passwdroot。...

Linux如何修改远程访问端口

对于Linux服务器而言,其默认的远程访问端口为22。但是,出于安全方面的考虑,一般都会修改该端口。下面我来简答介绍一下如何修改Linux服务器默认的远程访问端口。对于默认端口而言,其相关的配置位于/...

如何批量更改文件的权限

如果你发觉一个目录结构下的大量文件权限(读、写、可执行)很乱时,可以执行以下两个命令批量修正:批量修改文件夹的权限chmod755-Rdir_name批量修改文件的权限finddir_nam...

CentOS「linux」学习笔记10:修改文件和目录权限

?linux基础操作:主要介绍了修改文件和目录的权限及chown和chgrp高级用法6.chmod修改权限1:字母方式[修改文件或目录的权限]u代表所属者,g代表所属组,o代表其他组的用户,a代表所有...

Linux下更改串口的权限

问题描述我在Ubuntu中使用ArduinoIDE,并且遇到串口问题。它过去一直有效,但由于可能不必要的原因,我觉得有必要将一些文件的所有权从root所有权更改为我的用户所有权。...

Linux chown命令:修改文件和目录的所有者和所属组

chown命令,可以认为是"changeowner"的缩写,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。当只需要修改所有者时,可使用...

chmod修改文件夹及子目录权限的方法

chmod修改文件夹及子目录权限的方法打开终端进入你需要修改的目录然后执行下面这条命令chmod777*-R全部子目录及文件权限改为777查看linux文件的权限:ls-l文件名称查看li...

Android 修改隐藏设置项权限

在Android系统中,修改某些隐藏设置项或权限通常涉及到系统级别的操作,尤其是针对非标准的、未在常规用户界面显示的高级选项。这些隐藏设置往往与隐私保护、安全相关的特殊功能有关,或者涉及开发者选项、权...

完蛋了!我不小心把Linux所有的文件权限修改了!在线等修复!

最近一个客户在群里说他一不小心把某台业务服务器的根目录权限给改了,本来想修改当前目录,结果执行成了根目录。...

linux改变安全性设置-改变所属关系

CentOS7.3学习笔记总结(五十八)-改变安全性设置-改变所属关系在以前的文章里,我介绍过linux文件权限,感兴趣的朋友可以关注我,阅读一下这篇文章。这里我们不在做过的介绍,注重介绍改变文件或者...

Python基础到实战一飞冲天(一)--linux基础(七)修改权限chmod

#07_Python基础到实战一飞冲天(一)--linux基础(七)--修改权限chmod-root-groupadd-groupdel-chgrp-username-passwd...

linux更改用户权限为root权限方法大全

背景在使用linux系统时,经常会遇到需要修改用户权限为root权限。通过修改用户所属群组groupid为root,此操作只能使普通用户实现享有部分root权限,普通用户仍不能像root用户一样享有超...

怎么用ip命令在linux中添加路由表项?

在Linux中添加路由表项,可以使用ip命令的route子命令。添加路由表项的基本语法如下:sudoiprouteadd<network>via<gateway>这...

Linux配置网络

1、网卡名配置相关文件回到顶部网卡名命名规则文件:/etc/udev/rules.d/70-persistent-net.rules#PCIdevice0x8086:0x100f(e1000)...

Linux系列---网络配置文件

1.网卡配置文件在/etc/sysconfig/network-scripts/下:[root@oldboynetwork-scripts]#ls/etc/sysconfig/network-s...

取消回复欢迎 发表评论: