• (原)用于 Oracle 自动创建单号的存储过程


    场景:
            不同的单据根据日期和单据流水自动生成顺序的单号。

    解决办法:

    create or replace procedure proc_id_builder(id varchar2, sn out varchar2AS
      rowt 
    int;
      upperID 
    varchar2(64);
    begin
    upperID :
    = upper(id);
      
    select count(*into rowt from ts_parameter where parameterid = upperID;
      
    if rowt = 0 then
        sn :
    = to_char(sysdate, 'YYMMDD'|| '000001';
        
    insert into ts_parameter values (upperID, sn, '');
        
    commit;
        
    return;
      
    end if;

      
    select parametervalue into sn from ts_parameter where parameterid = upperID for update;

      
    if substr(sn, 16> to_char(sysdate, 'YYMMDD'then
        sn :
    = '';
        
    return;
      
    end if;
      
    --生成单号
      if substr(sn, 16< to_char(sysdate, 'YYMMDD'then
        sn :
    = lpad(to_char(sysdate, 'YYMMDD'|| '000001',12,'0');
      
    else
        sn :
    = lpad(to_char(to_number(sn) + 1),12,'0');
      
    end if;
      
    --更新单号
      update ts_parameter set parametervalue = sn where parameterid = upperID;
      
    commit;

    EXCEPTION
      
    WHEN OTHERS THEN
        
    ROLLBACK;
        lfguser.proc_log_ora_exception(p_err_Num 
    => SQLCODE,
                                       p_err_Msg 
    => SQLERRM,
                                       p_err_Source 
    => 'proc_ticketid_builder');
    end;
  • 相关阅读:
    linux 压缩当前文件夹下所有文件
    redis从入门到精通
    焦点小组测试和可用性测试
    面包屑的故事
    VSCode导入两个工程示例
    数据库规格化
    mergeCI一点小波澜
    Java中List与Set相互转化
    MyBatis中in的使用
    长寿时代的养老风险管理
  • 原文地址:https://www.cnblogs.com/spymaster/p/895654.html
Copyright © 2020-2023  润新知