南大通用数据库-Gbase-8a-MPP-Cluster-存储过程以及函数-04

南大通用数据库Gbase8a MPP Cluster学习存储过程以及函数语法

一、例1

(1)存储过程实现内容

按照给定的条数参数,生成相应的记录数。

存储过程定义:

CREATE PROCEDURE "GenerateTestData"(num int)
begin
    declare tempval int;
    
    set tempval = 1;
    set autocommit = off;
    label: loop
        insert into czg values(tempval);
        if tempval >= num then 
            leave label;
        else
            set tempval = tempval + 1;
        end if;
    end loop label;
    commit;
end;
(2)测试步骤
gbase> CREATE TABLE "test" ("a" int(11));
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> drop procedure if exists "GenerateTestData";
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

gbase> DELIMITER //
gbase> CREATE PROCEDURE "GenerateTestData"(num int)
    -> begin
    ->     declare tempval int;
    ->     
    ->     set tempval = 1;
    ->     set autocommit = off;
    ->     label: loop
    ->         insert into czg values(tempval);
    ->         if tempval >= num then 
    ->             leave label;
    ->         else
    ->             set tempval = tempval + 1;
    ->         end if;
    ->     end loop label;
    ->     commit;
    -> end;//
Query OK, 0 rows affected (Elapsed: 00:00:00.00)

gbase> call "GenerateTestData"(10);//
Query OK, 0 rows affected (Elapsed: 00:00:00.04)

gbase> select count(*) from test;//
+----------+
| count(*) |
+----------+
|       10 |
+----------+
1 row in set (Elapsed: 00:00:00.00)

gbase> select * from test;//
+------+
| a    |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
|    7 |
|    8 |
|    9 |
|   10 |
+------+
10 rows in set (Elapsed: 00:00:00.00)

二、例2-涉及的语法

(1)DELIMITER

语法格式:

DELIMITER 符号

语法解释:
起到分隔符的作用,通常是使用//,因为此符号并不是很常见,用来告诉数据库哪些Sql语句是一个整体。

(2)BEGIN…END

语法格式:

[标签名:] BEGIN
    函数体
END [标签名]

语法解释:
代表函数体的开始和结束,如果在开始是定义了标签,结束时也要用标签,中间写具体的业务逻辑。

(3)DECLARE

语法格式:

DECLARE 变量名 变量类型;

语法解释:
在函数体内定义局部变量。

注意事项:
1、一个DECLARE可以定义多个变量。
2、DECLARE必须在BEGIN…END之间。

(4)SET

语法格式:

SET 变量名 = 值;

语法解释:
给定义的变量赋值。

(5)IF

语法格式:

IF 判断条件 THEN
    具体逻辑
ELSEIF 判断条件 THEN
    具体逻辑
ELSE
    具体逻辑
END IF;

语法解释:
IF判断,根据不同的条件进入不同的逻辑分支。

(6)LOOP

语法格式:

[标签名:] LOOP
    具体逻辑
END LOOP [标签名] ;

语法解释:
死循环,建议加上标签,再结合LEAVE来结束循环。

(7)LEAVE

语法格式:

LEAVE 标签名;

语法解释:
跳到某个标签,LEAVE一般用来结束循环

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值