PL/SQL数据类型、控制语句
SQL数据类型
在SQL中适用的数据类型及子类型、数据类型比较规则、数据转换、格式模型等,在PL/SQL中均适用
但以下除外:
最大值不一样,例如 VARCHAR2,在SQL中最大是4000字节,而在PL/SQL中是32767字节
BINARY_FLOAT和 BINARY_DOUBLE类型中多了一些常量定义,如
BINARY_FLOAT_MAX_NORMAL
SIMPLE_FLOAT和 SIMPLE_ DOUBLET两个子类型
布尔数据类型
定义
<变量名> BOOLEAN;
值域
TRUE,FALSE,NULL
常用运算
TRUE OR FALSE --> TRUE
FALSE AND NULL --> FALSE
PLS_INTEGER
与 BINARY_INTEGERS完全一样
范围是-2,147,483,648到2,147,483,647,用32位二进制表示
可为NULL
比 NUMBER或其子类,具有占用存储空间少,运算速度快的优势( PLS_INTEGER采用硬件计
算而不是 NUMBER所使用的库计算,所以快很多)
不具有 NOT NULL约束
SIMPLE_INTEGER
PLS_INTEGER的子类
具有NOT NULL约束
当确定PLS_INTEGER定义的变量值肯定不会包含NULL时,可改用SIMPLE_INTEGER来定义
自定义的PL/SQL子类型
SUBTYPE MYHEIGHT IS NUMBER(3,2);
SUBTYPE SUBJECT_SCORE IS PLS_INTEGER RANGE 0..100;
控制语句--条件
if then
if then else
if then elsif
if condition_1 then statements_1 elsif condition_2 then statements_2 [elsif condition_3 then statements_3 ]... [ else_statements ] end if;
简单case
case selector when selector_value_1 then statements_1 when selector_value_2 then statements_2 ... when selector_value_n then statements_n [else else_statements] end case;
查找式case
case when condition_1 then statements_1 when condition_2 then statements_2 ... when scondition_n then statements_n [else else_statements] end case;
控制语句--循环
基本的LOOP
[lable] loop statements end loop [lable]; --特点:无限循环 --exit:退出当前循环 --continue: 中断当前的循环并进入下一次循环 --对于多层循环,如果指定了lable,二者均是退出/中断lable对应的循环(从最内层调到最外层循环)
for loop
[lable] for index [reverse] lower_bound..upper_bound loop statements end loop[lable];
while loop
[lable] while condition loop statements end loop [lable];
goto
--可以跳转到指定的lable
NULL
NUL语句是不做任何事的语句
为G0TO语句提供个“落脚点"
可在条件语句中通过増加ELSE+NULL的方式,来对条件选择进行说明,使得代码可读性更佳
在构建代码框架初期作为个占位符,用于保证整个结构能编译通过