职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 517|回复: 0

Oracle PL/SQL系列教程之PL/SQL中的数据类型

[复制链接]
千面小魔女 发表于 2018-7-12 21:24 | 显示全部楼层 |阅读模式
Oracle PL/SQL系列教程之PL/SQL中的数据类型                                                         版权:甲骨文(暨大)认证授权培训中心


                       
            在本章中,我们将讨论和学习PL/SQL中的数据类型。 PL/SQL变量,常量和参数必须具有有效的数据类型,它指定存储格式,约束和有效的值范围。本节将重点介绍SCALAR和LOB数据类型。其他两个数据类型(复合类型和引用类型)将在后面的章节中介绍。
  • 标量(SCALAR)类型 - 它是没有内部组件的单个值,例如:NUMBER,DATE或BOOLEAN等。
  • 大对象(LOB)类型 - 指向与其他数据项(例如:文本,图形图像,视频剪辑和声音波形)分开存储的大对象的指针。
  • 复合类型 - 具有可单独访问的内部组件的数据项。例如,集合和记录。
  • 引用类型 - 指向其他数据项。

PL/SQL标量数据类型和子类型PL/SQL标量数据类型和子类型分为以下几类:
序号类型描述
1数字执行算术运算的数值。
2字符表示单个字符或字符串的字母数字值。
3布尔执行逻辑运算的逻辑值。
4日期时间用于表示日期和时间的值PL/SQL提供了数据类型的子类型。例如,NUMBER数据类型具有一个叫作INTEGER的子类型。 您可以使用PL/SQL程序中的子类型将数据类型与其他程序中的数据类型兼容,同时将PL/SQL代码嵌入到另一个程序(如Java程序)中。
PL/SQL数值数据类型和子类型下表列出了PL/SQL预定义的数字数据类型及其子类型 -
序号类型描述
1PLS_INTEGER带符号整数:-2,147,483,648至2,147,483,647,以32位表示
2BINARY_INTEGER带符号整数:-2,147,483,648至2,147,483,647,以32位表示
3BINARY_FLOAT单精度IEEE 754格式浮点数
4BINARY_DOUBLE双精度IEEE 754格式浮点数
5NUMBER(prec, scale)在1E-130到(但不包括)1.0E126范围内的绝对值的定点或浮点数。NUMBER变量也可以表示0
6DEC(prec, scale)ANSI特定定点类型,最大精度为38位十进制数字
7DECIMAL(prec, scale)IBM具体定点类型,最大精度为38位十进制数字
8NUMERIC(pre, secale)浮点型,最大精度为38位十进制数
9DOUBLE PRECISIONANSI特定浮点类型,最大精度为126位二进制数字(大约38位十进制数字)
10FLOATANSI和IBM特定浮点类型,最大精度为126位二进制数字(大约38位十进制数字)
11INTANSI特定整数类型,最大精度为38位十进制数
12INTEGERANSI和IBM特定整数类型,最大精度为38位十进制数
13SMALLINTANSI和IBM特定整数类型,最大精度为38位十进制数
14REAL浮点型,最大精度为63位二进制数字(约十八位数)以下是有效的声明 -
DECLARE  num1 INTEGER;  num2 REAL;  num3 DOUBLE PRECISION; BEGIN  null; END; /SQL当上述代码编译和执行时,它产生以下结果 -
PL/SQL procedure successfully completedShellPL/SQL字符数据类型和子类型以下是PL/SQL预定义字符数据类型及其子类型的详细信息 -
序号类型描述
1CHAR固定长度字符串,最大大小为32,767字节
2VARCHAR2最大大小为32,767字节的可变长度字符串
3RAW最大大小为32,767字节的可变长度二进制或字节字符串,不由PL/SQL解释
4NCHAR固定长度的国家字符串,最大大小为32,767字节
5NVARCHAR2可变长度的国家字符串,最大大小为32,767字节
6LONG最大长度为32,760字节的可变长度字符串
7LONG RAW最大大小为32,760字节的可变长度二进制或字节字符串,不由PL/SQL解释
8ROWID物理行标识符,普通表中的行的地址
9UROWID通用行标识符(物理,逻辑或外部行标识符)



PL/SQL布尔数据类型BOOLEAN数据类型存储逻辑运算中使用的逻辑值。逻辑值为布尔值:TRUE,FALSE以及NULL值。
但是,SQL没有类似于BOOLEAN的数据类型。 因此,布尔值不能用于 -
  • SQL语句
  • 内置SQL函数(如:TO_CHAR)
  • 从SQL语句调用PL/SQL函数

PL/SQL日期时间和间隔类型DATE数据类型用于存储固定长度的数据日期时间,其包括自午夜以来以秒为单位的时间。 有效期为公元前4712年1月1日至公元9999年12月31日。
默认日期格式由Oracle初始化参数NLS_DATE_FORMAT设置。 例如,默认值可能是“DD-MON-YY”,其中包括一个月份的两位数字,月份名称的缩写以及年份的最后两位数字。 例如,01-OCT-12。
每个DATE类型的数据值包括世纪,年,月,日,时,分,秒。下表显示每个字段的有效值 -
字段名有效的日期时间值有效间隔值
YEAR-4712至9999(不包括第0年)任意非零整数
MONTH01 ~ 1201 ~ 11
DAY01至31(限于MONTH和YEAR的值,根据本地日历的规则)任何非零整数
HOUR00 ~ 2300 ~ 23
MINUTE00 ~ 5900 ~ 59
SECOND00 ~ 59.9(n),其中9(n)是时间分秒的精度00 ~ 59.9(n),其中9(n)是间隔分数秒的精度
TIMEZONE_HOUR-12至14(范围适应夏令时更改)不适用
TIMEZONE_MINUTE00 ~ 59不适用
TIMEZONE_REGION在动态性能视图V$TIMEZONE_NAMES找到不适用
TIMEZONE_ABBR在动态性能视图V$TIMEZONE_NAMES找到不适用PL/SQL大对象(LOB)数据类型大对象(LOB)数据类型指的是大数据项,如文本,图形图像,视频剪辑和声音波形。 LOB数据类型允许对数据进行高效,随机,分段访问。以下是预定义的PL/SQL LOB数据类型 -
数据类型描述大小
BFILE用于在数据库外的操作系统文件中存储大型二进制对象。取决于系统,但不得超过4GB。
BLOB用于在数据库中存储的大型二进制对象8TB至128TB
CLOB用于在数据库中存储大字符数据。8TB至128TB
NCLOB用于在数据库中存储大块NCHAR数据。8TB至128TBPL/SQL用户定义的子类型子类型是另一种数据类型的子集,它称为基本类型。子类型具有与其基本类型相同的操作,但只有基本类型有效值的子集。
PL/SQL预定义包STANDARD中的几个子类型。 例如,PL/SQL预先定义子类型CHARACTER和INTEGER,如下所示:
SUBTYPE CHARACTER IS CHAR; SUBTYPE INTEGER IS NUMBER(38,0);SQL可以定义和使用自己的子类型。以下程序说明了如何定义和使用用户定义的子类型 -
DECLARE  SUBTYPE name IS char(20);  SUBTYPE message IS varchar2(100);  salutation name;  greetings message; BEGIN  salutation := 'Reader ';  greetings := 'Welcome to the World of PL/SQL';  dbms_output.put_line('Hello ' || salutation || greetings); END; /SQL当上述代码在SQL提示符下执行时,它会产生以下结果 -
Hello Reader Welcome to the World of PL/SQL PL/SQL procedure successfully completed.SQLPL/SQL中的NULLPL/SQL中的NULL值表示丢失或未知数据,它们不是整数,字符或任何其他特定数据类型。 请注意,NULL与空数据字符串或空字符值“\0”不同。可以将一个null值分配给其它变量,但不能等同于任何东西,包括其自身(null)。

本文转自:http://www.eduforth.com.cn/knowledge/knowledge286.html



您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-28 22:34 , Processed in 0.147734 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表