-
(原)用于 Oracle 自动创建单号的存储过程
场景:
不同的单据根据日期和单据流水自动生成顺序的单号。
解决办法:
create or replace procedure proc_id_builder(id varchar2, sn out varchar2) AS
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;
![](/Images/OutliningIndicators/None.gif)
select parametervalue into sn from ts_parameter where parameterid = upperID for update;
![](/Images/OutliningIndicators/None.gif)
if substr(sn, 1, 6) > to_char(sysdate, 'YYMMDD') then
sn := '';
return;
end if;
--生成单号
if substr(sn, 1, 6) < 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;
![](/Images/OutliningIndicators/None.gif)
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;
![](/Images/OutliningIndicators/None.gif)
-
相关阅读:
linux 压缩当前文件夹下所有文件
redis从入门到精通
焦点小组测试和可用性测试
面包屑的故事
VSCode导入两个工程示例
数据库规格化
mergeCI一点小波澜
Java中List与Set相互转化
MyBatis中in的使用
长寿时代的养老风险管理
-
原文地址:https://www.cnblogs.com/spymaster/p/895654.html
Copyright © 2020-2023
润新知