GBase 8s的SPL语句中支持的循环语法

循环

(1)GOTO
语法

<<lbl_goto>>
    spl_code;
if expr then
    goto lbl_goto;
end if;

示例

create procedure up_test_goto()
define i int;

let i = 0; 

begin
    <<loop_label>>
    begin
        let i = i + 1;
    end;

    if i < 10 then
        insert into t_user values(i, concat('user_loop', to_char(i)));
        goto loop_label;
    end if;
end;
end procedure;

(2)LOOP
语法

loop
    if expr then
        exit;
    end if;
end loop;

loop
    exit when expr;
end loop;

示例1

create procedure up_test_loop1()
define i int;

let i = 1;

loop
    if i > 10 then
        exit;
    else
        insert into t_user values(i, concat('user_loop1_', to_char(i)));
    end if;
    
    let i = i + 1;
end loop;
end procedure;

示例2

create procedure up_test_loop2()
define i int;

let i = 1;

loop
    exit when i > 10;
    
    insert into t_user values(i, concat('user_loop2_', to_char(i)));
    
    let i = i + 1;
end loop;
end procedure;

(3)FOR/FOREACH
语法

for i in (start_val to end_val) loop
    spl_code;
end loop;

for i in (start_val to end_val)
    spl_code;
end for;

foreach select col1, col2,... into var1, var2,... from table_name
    spl_code;
end foreach;

示例1

create procedure up_test_for1()
define i int;

for i in (1 to 10) loop
    insert into t_user values(i, concat('user_for1_', to_char(i)));
end loop;
end procedure;

示例2

create procedure up_test_for2()
define i int;

for i in (1 to 10)
    insert into t_user values(i, concat('user_for2_', to_char(i)));
end for;
end procedure;

示例3

create procedure up_test_foreach()
define userid int;
define username varchar(20);

foreach select f_userid, f_username into userid, username from t_user
    if mod(userid, 2) == 0 then
        insert into t_user2 values(userid, username);
    end if;
end foreach;

end procedure;

(4)WHILE
语法

while expr loop
    spl_code;
end loop;

while expr
    spl_code;
end while;

示例1

create procedure up_test_while1()
define i int;
let i = 1;

while i < 10 loop
    insert into t_user values(i, concat('user_while1_', to_char(i)));
    let i = i + 1;
end loop;
end procedure;

示例2

create procedure up_test_while2()
define i int;
let i = 1;

while i < 10
    insert into t_user values(i, concat('user_while2_', to_char(i)));
    let i = i + 1;
end while;
end procedure;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值