原文:http://blog.isdevil.com/cjerrybird/2019/03/plsql%e7%bc%96%e7%a8%8b%e5%9f%ba%e7%a1%80.html
1 简介
plsql编程 编出来的小程序相当于一个匿名函数,无法实现调用。那么如何执行呢?在编程完后,输入/
.
1.1 大致结构
- 声明部分[可选]:用来声明变量与定义常量
- 数据执行部分:用来放置执行的语句
- 异常部分[可选]:用来放置出现异常时候的处理语句
在以上三个部分的每个语句必须以分号结束 ; 。 PL / SQL块可以嵌套在其他PL / SQL块中。
1.2例:
DECLARE
#定义变量
<variable_name> <variable_type> [:= <variable_value>];
#定义常量
<constant_name> constant <variable_type> := <constant_value>;#常量必须在定义时初始化
BEGIN
<execute statement>
EXCEPTION
<异常处理>
END;
2 常用数据类型
赋值语句:=
2.1 数值类型
data_type | description |
---|---|
number(p,s) | p指数值中所有有效数字的个数,s值得是小数点后的位数 |
2.2 字符类型
data_type | description |
---|---|
char(n) | 固定字符。n代表字符的个数,若实际输入的个数小于n则以空格填充 |
varchar2(n) | 可变长字符串 |
2.3 日期类型
data_type | description |
---|---|
date | 日期 |
2.4 特殊类型
2.4.1引用类型
- %TYPE
- 引用表中某一个字段的类型
<variable_name> <table_name>.<col_name>%TYPE
- %ROWTYPE
- 引用表中一个记录的类型
<variable_name> <table_name>%ROWTYPE
2.4.2记录类型
- 定义声明一个记录的结构数据类型
type <record_type_name> IS RECORD(
<variable_name1> <data_type> [not null] [:=<default_value>],
<variable_name2> <data_type> [not null] [:=<default_value>],
...,
<variable_namen> <data_type> [not null] [:=<default_value>],
);
- 定义一个变量
<variable_name> <record_type_name>;
注:用select为变量赋值
select <col_name>[,...,<col_name>] into <variable_name> from <table_name> [where <expr>];
3 流程控制
3.1条件语句
- IF语句
- 格式
IF <expr> THEN
<statement>
[ #可以没有ELSIF或者多个ELSIF段
ELSIF <expr> THEN
<statement>
...
]
ELSE
<statement>
...
END IF;
- CASE表达式
- 格式
CASE <条件表达式>
WHEN <条件表达式结果1> THEN
<statement>
WHEN <条件表达式结果2> THEN
<statement>
...
WHEN <条件表达式结果n> THEN
<statement>
[ELSE #可选
<statement>]
END;
3.2循环
3.2.1 LOOP循环
- 格式
LOOP
<statement>
EXIT WHEN <条件表达式>;
END LOOP;
3.2.2 WHILE循环
- 格式
WHILE <布尔表达式> LOOP
<statement>
END LOOP;
3.2.3 FOR循环
- 格式
FOR <variable_name> IN [REVERSE] <number1>..<number2> LOOP #若使用REVERSE则变量自动减一,默认自动加一
<statement>
END LOOP;
注:number1需要小于number2
3.2.4 标记和GOTO跳转
PL/SQL中GOTO语句可以无条件跳转到指定的标号去。
- 格式
GOTO <label_name>;
....
<<label_name> # 标记是用<< >>括起来的标识符
注:在以下地方使用不合法,编译会出问题
- 跳转到非执行语句前面
- 跳转到子块中
- 跳转到循环语句中
- 跳转到条件语句中
- 从异常处理部分跳转到执行
- 从条件语句的一部分跳转到另一部分
3.2.5 NULL语句
在plsql中NULL语句是一个可执行语句,表示不执行任何操作。
3.2.6 退出语句
CONTINUE
:满足条件时,退出当前循环的一轮循环,并继续进行当前循环的下一轮循环- 格式
CONTINUE WHEN <布尔表达式>
EXIT
:满足条件时,退出当前循环- 格式
EXIT WHEN <布尔表达式>
参考资料:类型:http://www.voidcn.com/article/p-uguijrrc-bpu.html
参考资料:流程控制:https://www.cnblogs.com/huyong/archive/2011/05/13/2045407.html