Oracle生成单据编号存储过程,在做订单类似的系统都可能会存在订单编号不重复,或是流水号按日,按年,按月进行重新编号。
可以参考以下存储过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
CREATE OR REPLACE procedure Pro_GetBillNO(TypeTable in varchar2,cur_mycursor out sys_refcursor) as DReceiptCode varchar2(40); DReceiptName varchar2(50); DPrefix1 varchar2(50); DISO varchar2(50); DIsAutoCreate varchar2(20); DPrefix2 varchar2(20); DPrefix3 varchar2(20); DDateValue date ; DNO number; DLength number; DResetType number; DSeparator varchar2(20); DReturnValue varchar2(50); strSql varchar2(1000); begin DReturnValue:= '' ; select "ReceiptCode" , "ReceiptName" , "Prefix1" , "ISO" , "IsAutoCreate" , "Prefix2" , "Prefix3" , "DateValue" , "NO" , "Length" , "ResetType" , "Separator" into DReceiptCode,DReceiptName,DPrefix1,DISO,DIsAutoCreate,DPrefix2,DPrefix3,DDateValue,DNO,DLength,DResetType,DSeparator from "SysReceiptConfig" where "ReceiptCode" =TypeTable; if to_number(DResetType)>0 then if DIsAutoCreate=1 THEN if DResetType=1 then --按年份 if to_number(to_char(sysdate, 'yyyy' )) <>to_number(to_char(DDateValue, 'yyyy' )) then update "SysReceiptConfig" set "NO" =1, "DateValue" =to_date(sysdate) where "ReceiptCode" =TypeTable; else update "SysReceiptConfig" set "NO" = "NO" +1 where "ReceiptCode" =TypeTable; end if; --年份 end if; --DResetType=1 if DResetType=2 then --按月份 if to_number(to_char(sysdate, 'MM' )) <>to_number(to_char(DDateValue, 'MM' )) then update "SysReceiptConfig" set "NO" =1, "DateValue" =to_date(sysdate) where "ReceiptCode" =TypeTable; else update "SysReceiptConfig" set "NO" = "NO" +1 where "ReceiptCode" =TypeTable; end if; --月份 end if; --DResetType=2 if DResetType=3 then --按日 if to_number(to_char(sysdate, 'dd' )) <>to_number(to_char(DDateValue, 'dd' )) then update "SysReceiptConfig" set "NO" =1, "DateValue" =to_date(sysdate) where "ReceiptCode" =TypeTable; else update "SysReceiptConfig" set "NO" = "NO" +1 where "ReceiptCode" =TypeTable; end if; --月份 end if; --DResetType=3 else update "SysReceiptConfig" set "NO" = "NO" +1 where "ReceiptCode" =TypeTable; end if; --DResetType end if; strSql:= ' select * from "SysReceiptConfig" where 1=1 ' ; strSql:=strSql || ' and "ReceiptCode"=' '' ||TypeTable|| '' '' ; open cur_mycursor for strSql; end ; |
以上所述是小编给大家介绍的Oracle生成单据编号存储过程的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.2cto.com/database/201704/633244.html