好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle生成单据编号存储过程的实例代码

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

查看更多关于Oracle生成单据编号存储过程的实例代码的详细内容...

  阅读:34次