#PL语句
YashanDB定义了一系列PL语句,按照这些语句指定的格式进行编程,并由YashanDB内置编译器进行编译,生成可运行的PL对象,如存储过程、函数等,满足在数据库层面实现各类复杂的业务逻辑。
# PL中的表达式
PL中的表达式是一个或多个值、运算符和SQL函数的组合,其计算结果为一个值,具体见表达式。
# PL中的静态SQL语句
在PL中可编写如下SQL语句:
这些SQL语句与非过程体中的普通SQL语句语法一致,但存在如下约束:
- 在SQL语句中出现的标识符与过程体的变量同名时,将优先使用过程体的变量名称,系统将该标识符替换为绑定参数占位符
:Bi
。 - 编写SELECT语句必须有INTO子句,且select_list的个数必须INTO子句变量或RECORD成员相对应。
- COMMIT/ROLLBACK只能使用缺省的COMMIT/ROLLBACK语法,不能为其指定任何选项。
# PL中的动态SQL语句
在PL中可以通过EXECUTE Statement执行动态SQL语句。
这些SQL语句与非过程体中的普通SQL语句语法一致,但存在如下约束:
- 动态SQL语句是非匿名块语句时,每个绑定变量的占位符,都需要有对应的变量在USING子句。
- 动态SQL语句是匿名块时,非问号的同名占位符将被视作同一个绑定变量。
- 对于动态SQL中的SELECT语句,如查询结果为一行数据,SQL中必须要有INTO子句;如查询结果为多行数据,SQL中必须要有BULK COLLECTION INTO子句。
# PL中的控制语句
- 循环控制语句:FOR循环语句、FORALL批量循环语句、WHILE循环语句和LOOP循环语句。
- 顺序控制语句:GOTO语句、CONTINUE语句和EXIT语句。
- 条件选择控制语句:IF语句和CASE语句。
- 过程体结束控制语句: RETURN语句。