VastbaseG100

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

Menu

LABEL: [DECLARE]BEGIN

功能描述

Vastbase G100在MySQL兼容模式下,支持BEGIN...END代码块的label标签可以通过”:“的形式设置。

注意事项

  • 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
  • 支持在代码块内,使用LEAVE 、EXIT 关键字退出代码块。
  • 可有相同标签名的代码块嵌套,EXIT LABEL名退出时退出的是其外层最近的代码块。
  • 代码块标签必须放在 DECLARE 的前面。
  • “LABEL:“与 BEGIN 或者 DECLARE 之间要有空格。

语法格式

[BEGIN_LABEL:]
[DECLARE] BEGIN statement_list
END [END_LABEL]

参数说明

  • BEGIN_LABEL

    开始标签名称。

  • statement_list

    代码块。

  • END_LABEL

    结束标签名称。

示例

示例1:在自定义函数中使用。

1、创建函数funct。

create or replace function funct(v1 int,v2 int) return int as
begin
a3:
declare con int:=10;
begin
con=v1+v2+con;
return con;
end;
end;
/

2、调用函数。

call funct(10,-2);

结果返回如下:

 funct
-------
    18
(1 row)

示例2:在存储过程中使用。

1、创建存储过程proc3。

create or replace procedure proc3(v1 int,v2 int, v3 out int) as
begin
a3:
declare con int:=10;
begin
raise info 'v1+v2和的10倍为';
v3=(v1+v2)*con;
end;
end;
/

2、调用存储过程。

call proc3(1,2,'');

结果返回如下:

INFO:  v1+v2和的10倍为
 v3
----
 30
(1 row)

示例3:在匿名块中使用。

创建匿名块。

begin
标签: declare
a text:='text:匿名块';
begin
raise info '%', a;
end;
end;
/

结果返回如下:

INFO:  text:匿名块
ANONYMOUS BLOCK EXECUTE