承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601
当前位置:首页  >  互联网圈  >  oracle(plsql)生成流水号

oracle(plsql)生成流水号

管理员 2023-08-01 08:01:57 互联网圈 0 ℃ 0 评论 2203字 收藏

oracle(plsql)生成流水号


CREATE OR REPLACE FUNCTION fn_no_make(v_prefix     VARCHAR2,
                                      v_table_name VARCHAR2,
                                      v_number_col VARCHAR2)
 /*
  * v_prefix:     编码前缀两位
  * v_table_name:编码所在表名
  * v_number_col:编码所在列名
  */ 
  RETURN VARCHAR2 IS
  v_old_no   VARCHAR2(50); –原编码
  v_new_no   VARCHAR2(50); –新编码
  v_old_num  NUMBER;       –原编码后三位编号
  v_new_num  VARCHAR2(10); –新编码后三位编号
  v_date_no  VARCHAR2(10); –当前日期编号
  v_sql      VARCHAR2(4000);
BEGIN
  v_sql := ‘SELECT MAX(‘ || v_number_col || ‘) FROM ‘ || v_table_name;
  EXECUTE IMMEDIATE v_sql INTO v_old_no;


  v_sql := ‘SELECT TO_CHAR(SYSDATE,”YYYYMMDD”) FROM DUAL’;
  EXECUTE IMMEDIATE v_sql INTO v_date_no;


  v_old_num := to_number(substr(v_old_no, 12, 3));
  v_new_num := lpad(to_char(v_old_num+1), 3, ‘0’);


  IF v_old_no IS NULL OR substr(v_old_no, 3, 8) <> v_date_no THEN
    v_new_no := v_prefix || v_date_no || ‘-‘ || ‘001’;
  ELSE
    v_new_no := v_prefix || v_date_no || ‘-‘ || v_new_num;
  END IF;


  RETURN v_new_no;
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line(SQLERRM);
END fn_no_make;

文章来源:丸子建站

文章标题:oracle(plsql)生成流水号

https://www.wanzijz.com/view/68200.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信