匿名块语句 (PL/SQL)
PL/SQL 匿名块语句是可以包含 PL/SQL 控制语句和 SQL 语句的可执行语句。它可以用来在脚本语言中实现过程逻辑。在 PL/SQL 上下文中,此语句可以由 DB2® 数据服务器编译和执行。
匿名块语句并不保存在数据库中,并且,它可以包含多达 3 个节:可选的声明节、必需的可执行节以及可选的异常节。
可选的声明节可以包含将由可执行节和异常节中的语句使用的变量、游标和类型的声明,并且被插入到可执行的 BEGIN-END 块之前。
可选的异常节可以被插入到 BEGIN-END 块的末尾附近。异常节必须以关键字 EXCEPTION 开始,并且一直持续到它所在的块的末尾为止。
调用
可以从交互式工具或命令行界面(例如 CLP)中执行此语句。另外,还可以在 PL/SQL 过程定义、函数定义或触发器定义中嵌入此语句。在这些上下文中,此语句被称为块结构,而不是被称为匿名块语句。
权限
调用匿名块不需要任何特权。但是,此语句的授权标识所拥有的特权必须包括调用匿名块中嵌入的 SQL 语句所必需的所有特权。
语法
.-----------. V | >>-+------------------------------+--BEGIN----statement-+-------> | .-------------. | | V | | '-+---------+----declaration-+-' '-DECLARE-' >--+-----------------------------------------------------------------------------------+--> | .--------------------------------------------------------------------. | | | .-----------------------------. .-------------------. | | | V V | V | | | '-EXCEPTION----WHEN----exception-condition--+----+-+--THEN----handler-statement-+-+-' '-OR-' >--END---------------------------------------------------------><
描述
- DECLARE
- 用于开始 DECLARE 语句的可选关键字,此关键字可用于声明数据类型、变量或游标。此关键字的使用取决于此块所在的上下文。
- declaration
- 指定作用域限定于块的数据类型、变量、游标、异常或过程声明。每个声明都必须以分号终止。
- BEGIN
- 用于引入可执行节的必需关键字,该节可以包含一个或多个 SQL 或 PL/SQL 语句。BEGIN-END 块可以包含嵌套的 BEGIN-END 块。
- statement
- 指定 PL/SQL 或 SQL 语句。每个语句都必须以分号终止。
- EXCEPTION
- 用于引入异常节的可选关键字。
- WHEN exception-condition
- 指定用于测试一种或多种异常的条件表达式。
- THEN handler-statement
- 指定所抛出的异常与 exception-condition 中的异常匹配时要执行的 PL/SQL 或 SQL 语句。每个语句都必须以分号终止。
- END
- 用于结束块的必需关键字。
示例
以下示例说明 DB2 数据服务器可以编译的最简单的匿名块语句:
BEGIN
NULL;
END;
以下示例说明您可以通过 DB2 CLP 以交互方式输入的匿名块:
SET SERVEROUTPUT ON;
BEGIN
dbms_output.put_line( 'Hello' );
END;
以下示例说明您可以通过 DB2 CLP 以交互方式输入的带有声明节的匿名块:
SET SERVEROUTPUT ON;
DECLARE
current_date DATE := SYSDATE;
BEGIN
dbms_output.put_line( current_date );
END;
