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 CentOS 6.6上安装Python 2.7.9
    CentOS yum 安装LAMP PHP5.4版本
    yum 安装php环境
    如何在Eclipse配置PyDev插件
    vagrant使用小结
    虚拟机下安装CentOS6.5系统教程
    python
    library cahce pin
    利用分析函数删除重复数据
    组合索引避免索引扫描后在过滤
  • 原文地址:https://www.cnblogs.com/spymaster/p/895654.html
Copyright © 2011-2022 走看看