Postgre数据库生成自定义订单号

使用postgre的存储过程生成自定义订单号
CREATE OR REPLACE FUNCTION get_order_no(tname VARCHAR,cname VARCHAR,cprefix VARCHAR)

RETURNS VARCHAR
AS
$$
DECLARE
--当前的订单号
now_order_no VARCHAR;
--存储当前日期
now_day VARCHAR;
--新的订单号
new_order_no VARCHAR;
--旧的时间
old_date VARCHAR;
--旧的订单编号
old_order_no BIGINT;
--新的订单编号
order_no VARCHAR;
BEGIN
EXECUTE 'SELECT MAX ('||cname||') FROM '||tname||' WHERE booking_time > CURRENT_DATE' INTO now_order_no;
--通过截取 获得订单号中的日期
old_date = substr(now_order_no,1,8);
--通过截取获得旧的订单编号
old_order_no = substr(now_order_no,10,5);
--当前日期
now_day = to_char(CURRENT_DATE,'yyyyMMdd');
--如果没有获得大于当前日期的订单 则从新插入
IF now_order_no is NULL THEN
new_order_no = cprefix || now_day || '00001';
RETURN new_order_no;
--如果 查询的时间 等于当前时间
ELSEIF old_date != now_day THEN
new_order_no = cprefix || now_day || '00001';
RETURN new_order_no;
ELSE
order_no= cast(old_order_no+1 as varchar);
order_no = LPAD(order_no,5,'0');
new_order_no = cprefix || now_day || order_no;
RETURN new_order_no;
END IF;

END;
$$
LANGUAGE 'plpgsql' VOLATILE;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值