入门精通5-PLSQL基础
这是关于PL/SQL语言基础结构、类型、控制结构的学习笔记
完整的基本结构包含三个部分:声明部分、执行部分、和异常处理部分。其中只有执行部分是必须的。
1 | DECLARE |
一些变体
1 | BEGIN |
1 | BEGIN |
数据类型
数值型
数值型变量类型有NUMBER
、PLS_INTEGER
、BINARY_INTEGER
。其中PLS_INTEGER
、BINARY_INTEGER
只能存储整型,NUMBER
能存储整型和浮点型数。NUMBER(P,S)
是一种声明数据类型的方法,其中P是精度、S是刻度范围。精度是数值中所有有效数字的个数,而范围是小数点右边数字的各位。
字符型
字符类型用来存储字符或字符串。类型有VAQRCHAR2
、CHAR
、LONG
。varchar
存储可变长字符,声明语法为:VARCHAR2(MaxLength)
。CHAR
类型表示定长字符串,声明语法为:CHAR(MacLength)
。LONG
类型变量是一个可变的字符串,与VARCHAR2
类似。
日期类型
日期类型的变量类型只有一种——DATE
,存储时间和日期信息,包括世纪、年、月、日、时、分、秒。DATE
变量的存储空间是七个字节,每个部分占用一个字节。
布尔类型
布尔类型的变量类型只有BOOLEAN
,取值范围为:true、false、null
type定义的数据类型
语法type <数据类型名称> is <数据类型>
,系统允许用户定义数据类型有两种,它们是RECORD
和TABLE
常量与变量
常量
常量定义语法格式:
1 | <常量名> constant <数据类型> :=<值> |
变量
定义变量语句格式
1 | <变量名> <数据类型>[(宽度):=<初始值>] |
- | 控制语句 | 说明 |
---|---|---|
01 | if … then | 判断if正确执行then |
02 | if … then…else | 判断if正确执行then,否则执行else |
03 | if … then…elsif | 嵌套判断 |
04 | case | 有逻辑的从数值中做出选择 |
05 | loop…exit…end | 循环控制,用判断语句执行exit |
06 | loop…exit when…end | 循环控制,when为真执行exit |
07 | while…loop…end | 当while为真时循环 |
08 | for…in…loop…END | 已知循环次数的循环 |
09 | goto | 无条件转向控制 |
选择结构
if
1 | IF(条件表达式1) THEN |
示例:
1 | declare |
case
1 | case 检测表达式 |
示例:
1 | declare |
循环结构
LOOP…EXIT…END
关键字loop
和end
表示循环执行的语句范围,exit
关键字表示退出循环,一般在if判断中。
1 | DECLARE |
LOOP…EXIT WHEN…END
WHEN
后面接退出循环体的条件,先循环再判断退出条件。
1 | DECLARE |
WHILE…LOOP…END
WHILE
后面为进入循环体的条件,该语句先判断退出条件再进入循环体。
1 | DECLARE |
FOR…IN…LOOP…END
1 | DECLARE |
表达式
按照操作对象的不同,表达式的分为字符表达式、布尔表达式两种,所以运算符也分为两类
- 字符运算符:字符连接符
||
- 布尔运算符:
AND
、OR
、NOT
- 布尔表达式中算数运算符:等于
=
,不等于!=
,大于>
,大于等于>=
,小于<
,小于等于<=
- 布尔表达式中其他运算符:
BETWEEN ... AND ...
划定范围,例如7 BETWEEN 3 AND 99
为真;IN
判断某一元素是否属于某个集合,例如'Scott' IN ('SYS','John','Mary')
为假