ORACLE-PL/SQL基础(一):变量赋值、数据类型

PL/SQL是ORACLE支持的编程语言,就像SQLSever的TSQL,我们可以通过它来实现更多更加灵活的功能。

特别的是,PL/SQL中有异常处理,即可以抛出异常以及相关说明,这将在下一篇博客中再做说明。

介绍PL/SQL基本语法及使用样例的系列BLOG主要由两篇,本篇将介绍PL/SQL的一些特性、变量赋值与数据类型的知识,下一篇再对PL/SQL的基本操作:游标、存储过程等进行说明。
数据库新手,如有问题,欢迎交流~

PL — Procedural Language(过程性)
强类型语言(变量在使用之前一定要先声明)

下面我们来看一下,如何使用 PL/SQL进行简单的变量声明、定义与赋值:

变量赋值

直接赋值:v_1 := 200

通过SQL语言查询结果赋值:

select number_seats
into v_NumberSeats /*表示查询结果赋值给into后的对象*/
from rooms
where room_id = '99999'

数据类型

PL/SQL中的数据类型主要分为三类:

  1. 标量数据类型
  2. 大型对象数据类型
  3. 复合数据类型
标量数据类型

标量类型,指内部没有任何组件的数据类型,包括有:

数字(number)、字符(character)、日期(date)、布尔(boolean)、行标识符(rowid)、原族(raw)

这些基础类型内涵子类型,可通过子类型限制变量的取值范围。

基本的类型同一般关系型数据库一致,比较少闻的原族类型用来存储二进制数据,包含两种类型:RAW(定长、2000Bytes)和LONG RAW(2GB,LOB)

大型对象数据类型(LOB)

大型对象数据类型用来存储类似图像、声音这样的大型数据对象

LOB对象可以是二进制也可以是字符数据、最大长度不超过4G

可分为:BFILE(二进制文件)、BLOB(二进制)、CLOB(字符型)、NCLOB(长度可变的字符型)四类

复合类型

Oracle中有两种复合类型,分别为记录类型RECORD表类型

  • 记录类型
    相当于数据库表中的一行,不同的字段相当于数据库表中的不同列,不同字段具有不同的数据类型

    定义:

    TYPE <recordetypename> IS RECORD
    (<fileldname> <datatype> [[NOT NULL] {DEFAULT|:} <expression>], 
     <fileldname>... /*定义记录中需要的字段*/
    )
    

    通常的应用场景下,如单表查询整行的结果存储在一个记录元素内,可以采用***%ROWTYPE***属性,避免一个一个字段地去定义RECORD结构,使用如下:

    /*sourcetable即所查询表的name*/
    DECLARE recordname sourcetable%ROWTYPE
    SELECT * INTO recordname
    FROM sourcetable
    WHERE ...
    
  • 表类型(集合类型)
    表类型类似于一个数据库的表,表中有两类:Key和Value

    Key的类型是BINARY_INTERGER,Value的类型是在定义中指定的类型

    可以将key理解为PK,充当Value的索引

    定义:

    TYPE tablename IS TABLE OF type
    INDEX BY BINART_INTEGER
    

    值得注意的是:

    • 在表中存储的元素个数只收到BINARY_INTEGER的取值范围限制;(只要 还有值域内key值未分配,就可以继续插入数据)
    • Key值是自定义的,只需要满足PRIMERY KEY的约束
    • Value的类型是完全自由的,可以是普通的Oracle数据类型,也可以是记录类型
    • 只有当数据被插入时,表才实际分配所需的内存空间,即永远不会有多余的空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值