OushuDB-PL 过程语言-二、PL/pgSQL的结构

2023-05-08 11:46:51 浏览数 (1)

PL/pgSQL是一种块结构语言,函数定义的所有文本都必须在一个块内,其中块中的每个声明和每条语句 都是以分号结束,如果某一子块在另外一个块内,那么该子块的END关键字后面必须以分号结束,不过 对于函数体的最后一个END关键字,分号可以省略,如: [ <<label>> ]

代码语言:javascript复制
[ DECLARE declarations ]
BEGIN
    statements
END [ label ];

在PL/pgSQL中有两种注释类型,双破折号(--)表示单行注释。/ /表示多行注释,该注释类型的规则等 同于C语言中的多行注释。 在语句块前面的声明段中定义的变量在每次进入语句块(BEGIN)时都会将声明的变量初始化为它们的缺省 值,而不是每次函数调用时初始化一次。如: CREATE FUNCTION populate() RETURNS integer AS $$

代码语言:javascript复制
DECLARE

-- 声明段 BEGIN

代码语言:javascript复制
    PERFORM my_function();
END;
$$ LANGUAGE plpgsql;

CREATE FUNCTION somefunc() RETURNS integer AS $$

代码语言:javascript复制
DECLARE
   quantity integer := 30;
BEGIN

三、声明: 所有在块里使用的变量都必须在块的声明段里先进行声明,唯一的例外是FOR循环里的循环计数变量, 该变量被自动声明为整型。变量声明的语法如下: variable_name [ CONSTANT ] variable_type [ NOT NULL ] [ { DEFAULT | := } expression ];

RAISE NOTICE 'Quantity here is %', quantity; quantity := 50;

-- 创建一个子块 -- DECLARE

代码语言:javascript复制
  quantity integer := 80;

BEGIN

代码语言:javascript复制
  RAISE NOTICE 'Quantity here is %', quantity;

END; RAISE NOTICE 'Quantity here is %', quantity; RETURN quantity; END; $$ LANGUAGE plpgsql; #执行该函数以进一步观察其执行的结果。 postgres=# select somefunc(); NOTICE: Quantity here is 30 NOTICE: Quantity here is 80 NOTICE: Quantity here is 50

somefunc

50 (1 row) --在这里的数量是30

0 人点赞