/*根據單據標誌位得到單號*/
create or replace procedure getdefaultno(
v_sign in varchar2, --標誌位
v_defaultno out varchar2) --單號
as
v_today varchar2(8); --今天日期
v_date varchar2(8); --表中日期
v_flowno varchar2(2); --流水號
begin
select (to_char(sysdate,'yyyy')||to_char(sysdate,'mm')||to_char(sysdate,'dd')) into v_today from dual;
select billdate,flowno into v_date,v_flowno from billtable where billsign = v_sign;
if (v_date is null) then
insert into billtable values (v_today,v_sign,'01'); --如果表中沒有此標誌位的紀錄
v_defaultno := v_today || v_sign || '01';
else
if (v_today = v_date) then
v_defaultno := v_today || v_sign || v_flowno; --如果是今天
else
update billtable set billdate = v_today ,flowno = '01' where billsign = v_sign; --新的一天
v_defaultno := v_today || v_sign || '01';
end if;
end if;
dbms_output.put_line(v_defaultno);
end getdefaultno;