tiptop 单据编号函数

来源:互联网 发布:淘宝助理下载订单 编辑:程序博客网 时间:2024/04/28 07:23

系统单据编号介绍:转载小冯子大神的博客点击打开链接
<1>直接调用系统函数:(模组名,单号,单据日期,单据性质,表名,栏位名……)

[html] view plaincopyprint?
  1. CALL s_auto_assign_no("aco",g_cno.cno01,g_cno.cno02,"14","cno_file","cno01","","","")  
  2. RETURNING li_result,g_cno.cno01  


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

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

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

[sql] view plaincopyprint?
  1. 例如:  
  2. 1.SQL> select systimestamp 时间 from dual;  
  3. 时间  
  4. --------------------------------------------------------------------------------  
  5. 22-9月 -12 09.02.21.389797 上午 -04:00  
  6.   
  7. 2.SQL> select to_char(systimestamp,'SSSS.FF') 格式化 from dual;  
  8.   
  9. 格式化  
  10. --------------  
  11. 1313.327268  
  12.   
  13. 3.SQL> select to_char(systimestamp,'YYYY-MM-DD HH24MISSFF9') 格式化后 from dual;  
  14.   
  15. 格式化后  
  16. --------------------------  
  17. 2012-09-22 090815972656000  

 

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

[sql] view plaincopyprint?
  1. #单据编号为l_slip  
  2. FUNCTION s_auno(p_date)  
  3. DEFINE   l_slip     VARCHAR(8),   #单别  
  4.           t_slip     VARCHAR(8),   #单号  
  5.           p_date     DATE,         #日期参数,根据日期得到年月  
  6.           l_date     VARCHAR(6),  
  7.          l_yymm     VARCHAR(4),  
  8.          l_mxno     VARCHAR(8),  
  9.          t_mxno     VARCHAR(4),  
  10.          t_s        VARCHAR(4)  
  11.   
  12. WHENEVER ERROR CONTINUE  
  13. MESSAGE "单据取号中..."  
  14. #--编号前四位(单据年月号)--  
  15. #--如果日期没有输入则以当前日期为准  
  16.    IF cl_null(p_date) THEN  
  17.       LET l_date = g_today USING 'YYYYMM'  
  18.    ELSE  
  19.       LET l_date = p_date USING 'YYYYMM'  
  20.    END IF   
  21. #--截取年月的后四位--  
  22.    LET l_yymm = l_date[3,6]  
  23.    LET t_slip[1,4] = l_yymm  
  24. #--编号后四位(单据流水号)--  
  25.    LET t_s = t_slip[1,4]  
  26.    SELECT MAX(编号) INTO l_mxno FROM 表  
  27.    WHERE  编号[1,4] = t_s  
  28.    CASE WHEN l_mxno IS NULL      LET t_slip[5,8] = '0001'  
  29.         WHEN l_mxno IS NOT NULL  LET t_slip[5,8] = (t_mxno+1) USING '&&&&'  
  30.         OTHERWISE                CALL cl_err('',SQLCA.sqlcode,1)  
  31.    END CASE  
  32.    LET t_mxno = l_mxno[5,8]  
  33. #--编号OK--  
  34.    MESSAGE "已经产生单据编号:",t_slip  
  35.    LET l_slip = t_slip  
  36.    RETURN l_slip  
  37. END FUNCTION  
0 0
原创粉丝点击