VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

声明语法

结构

PL/pgSQL块中可以包含子块,子块可以位于PL/pgSQL中任何部分。PL/pgSQL块的结构如下:

  • 声明部分:声明PL/pgSQL用到的变量、类型、游标、局部的存储过程和函数。

    DECLARE
    
    • 不涉及变量声明时声明部分可以没有。

    • 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。

    • 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。

  • (必选)执行部分:过程及SQL语句,程序的主要部分。

    BEGIN
    
  • (可选)执行异常部分:错误处理。

    EXCEPTION	
    
  • 结束PL/pgSQL块。

    END; 
    /
    

禁止在PL/pgSQL块中使用连续的Tab,连续的Tab可能会造成在使用vsql工具带-r参数执行PL/pgSQL块时出现异常。

分类

PL/pgSQL块可以分为以下几类:

  • 匿名块:动态构造,只能执行一次。语法请参考图1

  • 子程序:存储在数据库中的存储过程、函数、操作符和高级包等。当在数据库上建立好后,可以在其他程序中调用它们。

匿名块

匿名块(Anonymous Block)一般用于不频繁执行的脚本或不重复进行的活动。它们在一个会话中执行,并不被存储。

语法

匿名块的语法参见图1。

图1 anonymous_block::=

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

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

    最后的结束符“/”必须独占一行,不能直接跟在END后面。

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

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

子程序

存储在数据库中的存储过程、函数、操作符和高级包等。当在数据库上建立好后,可以在其他程序中调用它们。