zoukankan      html  css  js  c++  java
  • (原)用于 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安装.net core
    在IIS中如何配置SSL(https)
    Lambda的前世今生
    Java建造者模式
    leetcode 83 Remove Duplicates from Sorted List
    【设计】Office
    【设计】简书品牌重构
    【设计总结】
    【交互设计】
    【设计总结】
  • 原文地址:https://www.cnblogs.com/spymaster/p/895654.html
Copyright © 2011-2022 走看看