系统单据编号的几种实现方法

转载 2012年09月24日 15:25:00

系统单据编号介绍:
<1>直接调用系统函数:(模组名,单号,单据日期,单据性质,表名,栏位名……)

CALL s_auto_assign_no("aco",g_cno.cno01,g_cno.cno02,"14","cno_file","cno01","","","")
RETURNING li_result,g_cno.cno01


<2>简单的一句SQL语句实现编号,主要单别+日期年月日+时间时分秒毫秒

SELECT 'E11-'||TO_CHAR(SYSDATE,'YY')||
(SELECT CASE  MONTH(TO_CHAR(SYSDATE)) 
WHEN 01 THEN '1' WHEN 02 THEN '2' WHEN 03 THEN '3' WHEN 04 THEN '4'
WHEN 05 THEN '5' WHEN 06 THEN '6' WHEN 07 THEN '7' WHEN 08 THEN '8' 
WHEN 09 THEN '9' WHEN 10 THEN 'A' WHEN 11 THEN 'B' WHEN 12 THEN 'C' 
END 
FROM DUAL)||TO_CHAR(SYSDATE,'DDHH24MI')||TO_CHAR(SYSTIMESTAMP,'ssff2') 
FROM DUAL 

Systimestamp 函数返回本机数据库上当前系统日期和时间(包括微秒和时区).
你也可以选择使用to_char()函数来转换systimestamp()函数.

例如:
1.SQL> select systimestamp 时间 from dual;
时间
--------------------------------------------------------------------------------
22-9月 -12 09.02.21.389797 上午 -04:00

2.SQL> select to_char(systimestamp,'SSSS.FF') 格式化 from dual;

格式化
--------------
1313.327268

3.SQL> select to_char(systimestamp,'YYYY-MM-DD HH24MISSFF9') 格式化后 from dual;

格式化后
--------------------------
2012-09-22 090815972656000

 

<3>单据流水号函数(没加单别)

#单据编号为l_slip
FUNCTION s_auno(p_date)
DEFINE   l_slip     VARCHAR(8),   #单别
          t_slip     VARCHAR(8),   #单号
          p_date     DATE,         #日期参数,根据日期得到年月
          l_date     VARCHAR(6),
         l_yymm     VARCHAR(4),
         l_mxno     VARCHAR(8),
         t_mxno     VARCHAR(4),
         t_s        VARCHAR(4)

WHENEVER ERROR CONTINUE
MESSAGE "单据取号中..."
#--编号前四位(单据年月号)--
#--如果日期没有输入则以当前日期为准
   IF cl_null(p_date) THEN
      LET l_date = g_today USING 'YYYYMM'
   ELSE
      LET l_date = p_date USING 'YYYYMM'
   END IF 
#--截取年月的后四位--
   LET l_yymm = l_date[3,6]
   LET t_slip[1,4] = l_yymm
#--编号后四位(单据流水号)--
   LET t_s = t_slip[1,4]
   SELECT MAX(编号) INTO l_mxno FROM 表
   WHERE  编号[1,4] = t_s
   CASE WHEN l_mxno IS NULL      LET t_slip[5,8] = '0001'
        WHEN l_mxno IS NOT NULL  LET t_slip[5,8] = (t_mxno+1) USING '&&&&'
        OTHERWISE                CALL cl_err('',SQLCA.sqlcode,1)
   END CASE
   LET t_mxno = l_mxno[5,8]
#--编号OK--
   MESSAGE "已经产生单据编号:",t_slip
   LET l_slip = t_slip
   RETURN l_slip
END FUNCTION

系统单据编号的几种实现方法

系统单据编号介绍: 直接调用系统函数:(模组名,单号,单据日期,单据性质,表名,栏位名……) CALL s_auto_assign_no("aco",g_cno.cno01,g_cno.cno02...
  • fmx121586
  • fmx121586
  • 2012年09月22日 09:23
  • 3493

两种简单生成编号的方法

两种生成固定格式的序列号 订单号 一:      参考微秒数生成 function createOsn(){ $yCode = array('A', 'B', 'C', 'D...
  • index_ling
  • index_ling
  • 2017年02月22日 12:58
  • 290

SQLServer通过函获取订单编号

SQL获取订单编号 go --创建函数 create function getoids() --返回一个订单编号 returns varchar(20) as begin --定义一个接订单编号的变量...
  • Yangyang___
  • Yangyang___
  • 2017年06月22日 17:14
  • 260

获取单据编号的存储过程

 CREATE TABLE [dbo].[BillNo](    [Id] [int] IDENTITY(1,1) NOT NULL,    [BillName] [varchar](20) COLL...
  • chris_mao
  • chris_mao
  • 2008年02月25日 23:01
  • 743

java自定义单据编号自增,规则如:销售单("XSD20170614001"),

最近公司做一个进销存软件,需要给单据设置自定义编号功能 由于本人使用的是springmvc,仔细思考下后贴出代码: /*service层调用工具类*/ String billTy...
  • qq_34634551
  • qq_34634551
  • 2017年06月14日 11:33
  • 940

C# 生成订单号的几种方式

public class RandomNumber { public static object _lock = new object(); public st...
  • T_Twory
  • T_Twory
  • 2016年08月17日 15:05
  • 4039

nc 调用后台接口 生成单据编码单据编号

nc 调用后台接口 生成单据编码可以使用下列方法:  new HYPubBO().getBillNo(单据类型, 组织, null, null); 或者 new BillcodeGenera...
  • u010890857
  • u010890857
  • 2016年04月28日 17:39
  • 1108

用SQL方法生成单据号

SQL中自動生成單據號的做法 :如:傳入122,2333會生成:06AGAH00012206AGAH002333(注意:碼長一致性)--找帐套字头号 DECLARE @IH char(1) --SEL...
  • Kangco
  • Kangco
  • 2007年03月02日 15:19
  • 1167

自动生成C# 年月日加流水号的单据号、及日期时间相关函数的用法

string id = "R-" + DateTime.Now.Year.ToStiring()+DateTime.Now.Month.ToStiring()+DateTime.Now.Date.To...
  • he198108
  • he198108
  • 2013年09月23日 20:22
  • 3681

面试题——多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

多线程有两种实现方法,一是继承Thread类,重写方法run(),二是实现Runnable接口,实现方法run(); 同步有两种实现方法,分别是synchronized、wait与notify。...
  • qq_28484355
  • qq_28484355
  • 2017年07月15日 16:19
  • 764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:系统单据编号的几种实现方法
举报原因:
原因补充:

(最多只允许输入30个字)