我想这不是很难,只是我一直没有ORACLE的参考书,E文又菜。所以...需要请你指点。
除此之外,我主要是不能处理通用。我不想在每个窗体中都写个过程来调用。
除此之外,我主要是不能处理通用。我不想在每个窗体中都写个过程来调用。
解决方案 »
- 最离当前时间最近的一条记录。
- 求问,sql2008下如何进行截断日志操作
- 在sql2000中,如何查看已经建好的存储?
- 关于mysql的疑问
- 藏经阁第2卷-SQL常用的函数
- sql server中根据一个数据条件查询表中多条数据中对应字段的和等于该条件数据!
- 请问,插入一个记录后,返回这个记录的ID的SQL语句怎么写?
- SQL Server 安装过程中出现 “版本变更检查” 警告,如何解决?(急!!!)
- 请大家出手,求一组MS SQL语句
- 求救
- VFP:怎么样将一个做好的项目编译成可脱离VFP单独运行的EXE文件?
- ms sql server6.5 重装后,如何将data文件恢复??没有备份??只有.dat数据库文件!急!各位大吓帮帮忙!!!
如果你每一个相关窗体
傳入的单据标志位都不同就好辦了.
例如,w_a傳入'01',w_b傳入'02'.
(
billdate varchar2(8),
billsign varchar2(2),
flowno varchar2(2)
);
/*根據單據標誌位得到單號*/
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;
是的.
所有的窗體用的號全在billtable這張表中.
然後我判斷日期如果是新的一天就從'01'開始,否則用表中的號.
喔,忘了告訴你,你取到號後,在存到你的主表中去時,
別忘了將flowno加1存進去.
1.8位日期的组成可以简化为to_char(sysdate,'YYYYMMDD')
2.后两位可以使用Sequence
最终的方法是to_char(sysdate,'YYYYMMDD')||单据号||to_char(sequence)
1.我完全同意.
2.
這你就不知了.他的"单据标志位"是個固定的東西.
比如窗口a一直用'01',窗口b一直用'02'
而最後的"序号"他要求的是每天都從'01'開始.
因此它們都不能用Sequence