GBASE南大通用技术分享:GBase 8s SPL入门

本文详细介绍了GBASE南大通用GBase8s数据库的SPL编程语言,包括存储过程和函数的创建、变量声明、赋值、条件判断、循环、异常处理以及数据清洗示例,旨在帮助用户掌握基本的SPL编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GBASE南大通用GBase 8s数据库SPL入门

概述

  • SPL例程由开始语句,语句块,结束语句组成。

  • SPL例程根据是否需要返回值,分为存储过程和函数。

  • 语句块由SQL和SPL语句组成。

GBASE南大通用技术分享:GBase 8s 存储过程

语法

create procedure proc_name(param1 data_type1, param2 data_type2, ...)
    spl_code;
end procedure; 

GBASE南大通用技术分享:GBase 8s 函数

语法

create function func_name(param1 data_type1, param2 data_type2, ...)
returning data_type1 [as id1], data_type2 [as id2], ...
    spl_code;
    return val1, val2, ... [with resume];
end function;

语法

变量声明

语法

define var data_type;
define global var data_type default def_value;

示例

create procedure up_test_define1()
define m, n int;
define global i int default 1;
define global loginname varchar(20) default 'admin';
end procedure;
create procedure up_test_define2()
define global i int default 0;
define global loginname varchar(20) default '';

insert into t_user values(i, loginname);

let i = i + 1;
let loginname = concat('user_', to_char(i));

end procedure;

变量赋值

语法

let var = value;
let var1, var2,... = val1, val2, ...;
let var1, var2, ... = function(args1, args2, ...);
let var1, var2, ... = (select col1, col2, ... from table_name);

示例:1

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

let userid, username = 99, 'gbasedbt';

insert into t_user values(userid, username);
end procedure;

示例2:

create function fn_get_user_info(userid int)
returning int as userid, varchar(20) as username
    return userid, concat('user_func_', to_char(userid));
end function;

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

let userid, username = fn_get_user_info(888);

insert into t_user values(userid, username);
end procedure;

示例3:

create procedure up_test_let3()

define userid int;
define username varchar(20);

let userid, username = (select first 1 f_userid * 10 as f_userid, concat(f_username, '_select') from t_user);

insert into t_user values(userid, username);

end procedure;

条件

语法

case expr 
when val_1 then 
    code_1 
[when val_2 then 
    code_2 ...] 
else 
    code_n 
end case;

示例1:

create function fn_test_case(month int)
returning varchar(20) as f_quarter

define quarter varchar(20);

case month
when 1 then
    let quarter = '第一季度';
when 2 then
    let quarter = '第一季度';
when 3 then
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值