使用Pgsql创建自定义函数,生成uuid或等级

CREATE OR REPLACE FUNCTION uuid()
    RETURNS varchar AS
$uuid_str$
DECLARE
    uuid_str varchar;
BEGIN
    uuid_str := (select array_to_string(
                                array(select substring('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
                                                       FROM (ceil(random() * 62))::int FOR 1)
                                      FROM generate_series(1, 32)), ''));
    RETURN uuid_str;
END;
$uuid_str$ LANGUAGE plpgsql;

select uuid() as weiyi;

创建带参数的函数,并且根据参数变化返回不同的值:

-- 根据传入的成绩,返回ABC三个等级,使用case
create or replace function getty(score int)
    returns varchar as
$ty$
declare
    ty varchar;
begin
    case
        when score between 0 and 60 then ty = 'C';
        when score between 60 and 80 then ty = 'B';
        when score between 80 and 100 then ty = 'A';
        else ty = 'A++';
        end case;
    return ty;
end;
$ty$ language plpgsql;


select getty(0);

drop function getty;
drop function myuuid();
drop function myuuid(int);

create or replace function myuuid(n int)
    returns varchar as
$uuid$
declare
    uuid varchar;
begin
--     if elseif 只能在方法中使用
    if n < 40 then
        uuid = 'D';
    elseif n between 40 and 60 then
        uuid = 'C';
    elseif n between 60 and 80 then
        uuid = 'B';
    else
        uuid = 'A';
    end if;
    return uuid;
end;
$uuid$ language plpgsql;

select myuuid(80) as uuid;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024小神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值