PL 的主要功能
PL 将 SQL 的数据处理能力与过程语言的处理能力相结合,并支持直接处理 SQL 语句,而无需学习新的 API。
与其他过程编程语言一样,PL 支持声明常量和变量、控制程序流、定义子程序以及捕获运行错误。
异常处理
PL 可以便捷的检测和处理错误。
当发生错误时,PL 会报告异常,数据库当前执行任务被停止,并对相应的 PL 块进行异常处理。所以使用 PL 的时候不必像 C 程序那样对每个操作进行排查。
PL 块
PL 源程序的基本单元是块,由声明和语句组成。
PL 块由关键字 DECLARE、BEGIN、EXCEPTION 和 END 来定义。这些关键字分别将块分为声明部分、可执行部分和异常处理部分,仅可执行部分是必需的。
PL 块的声明是本地属性,在块执行完后不再存在,这样可以避免变量和子程序的命名空间混乱。
块可以被其他块嵌套。由于块是可执行语句,因此它可以出现其他块的可执行语句中。每个 PL 块可以设置一个标签。
PL 块又包含匿名块,您可以将匿名块提交给交互式工具或者加载到程序中,该块在交互式工具或程序中只运行一次,并不存储于数据库中。
变量和常量
PL 支持声明变量和常量,并可以在表达式中使用。
在程序运行时,变量的值可以更 改,但是常量的值不能更改。
程序包
程序包由逻辑上相关的 PL 类型、变量、常量、子程序、游标和异常组成。
程序包被编译并存储在数据库中,所以可以将程序包视为一种应用程序。
您可以编写自己的程序包,还可以使用 seekdb 自带的系统包。
触发器
触发器是一个已命名的 PL 单元,它存储在数据库中,并响应和运行数据库中发生的事件,即触发事件。
您可以指定触发器是在某一事件之前还是之后触发,以及触发器是针对每个事件还是该事件的每一行运行。例如,可以创建一个触发器,该触发器在 t1 表每次执行 INSERT 语句时运行。
输入输出
大多数的 PL 输入和输出(I/O)是通过将数据存储在表中或查询表的 SQL 语句完成的。而其余的 PL I/O 均由 seekdb 提供的 PL 系统包完成。
当前版本支持的 PL I/O 处理系统包只有 DBMS_OUTPUT,所以需要使用 mysql 客户端显示 DBMS_OUTPUT 的输出信息,并先执行命令 SET SERVEROUTPUT ON。