#PL语句

YashanDB定义了一系列PL语句,按照这些语句指定的格式进行编程,并由YashanDB内置编译器进行编译,生成可运行的PL对象,如存储过程、函数等,满足在数据库层面实现各类复杂的业务逻辑。

# PL中的表达式

PL中的表达式是一个或多个值、运算符和SQL函数的组合,其计算结果为一个值,具体见表达式

# PL中的静态SQL语句

在PL中可编写如下SQL语句:

  • DML:INSERT/UPDATE/SELECT/MERGE/DELETE等。
  • DCL:COMMIT/ROLLBACK/SAVEPOINT等。

这些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中的控制语句