匿名块

匿名块(Anonymous Block)是存储过程的字块之一,没有名称。一般用于不频繁执行的脚本或不重复进行的活动。

语法

匿名块的语法参见图1

图 1 anonymous_block::=
匿名块 - 图1

对以上语法图的解释如下:

  • 匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。输入“/”按回车执行它。

    匿名块 - 图2 须知: 最后的结束符“/”必须独占一行,不能直接跟在END后面。

  • 声明部分包括变量定义、类型、游标定义等。

  • 最简单的匿名块不执行任何命令。但一定要在任意实施块里至少有一个语句,甚至是一个NULL语句。

参数说明

  • DECLARE

    用于开始 DECLARE 语句的可选关键字,此关键字可用于声明数据类型、变量或游标。此关键字的使用取决于此块所在的上下文。

  • declaration_statements

    指定作用域限定于块的数据类型、变量、游标、异常或过程声明。每个声明都必须以分号终止。

  • BEGIN

    用于引入可执行节的必需关键字,该节可以包含一个或多个 SQL 或 PL/SQL 语句。BEGIN-END 块可以包含嵌套的 BEGIN-END 块。

  • execution_statements

    指定 PL/SQL 或 SQL 语句。每个语句都必须以分号终止。

  • END

    用于结束块的必需关键字。

示例

  1. --空语句块
  2. openGauss=# BEGIN
  3. NULL;
  4. END;
  5. /
  6. --创建演示表格:
  7. openGauss=# CREATE TABLE table1(id1 INT, id2 INT, id3 INT);
  8. CREATE TABLE
  9. --使用匿名块插入数据:
  10. openGauss=# BEGIN
  11. insert into table1 values(1,2,3);
  12. END;
  13. /
  14. ANONYMOUS BLOCK EXECUTE
  15. --查询插入数据:
  16. openGauss=# select * from table1;
  17. id1 | id2 | id3
  18. -----+-----+-----
  19. 1 | 2 | 3
  20. (1 rows)