`
吐蕃无敌土匪
  • 浏览: 6537 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics