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

转载 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

Oracle日期、字符串格式化函数,位数不足前面加0,一位数字显示两位,格式化数字为定长

格式化函数 函数 返回类型 描述 例子 to_char(timestamp, text) text 把时间戳转换成字串 to_char(current_ti...

存储过程中SELECT与SET对变量赋值

SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种...
  • Sayesan
  • Sayesan
  • 2015年11月27日 09:20
  • 8356

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

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

实现Lin ux系统小型化的几种方法

  • 2007年08月11日 13:38
  • 125KB
  • 下载

通过设置规则生成各种单据编号(一)

生成编号的填写规则

笔记20150522-生成更新重复单据编号的update语句

public string GenereteUpdateSql(int type = 0,int localdb=0) { StringBuilder sb =...

通过设置规则生成各种单据编号(二)

设置规则,生成业务单编号

系统优化的几种方法

  • 2013年10月17日 14:40
  • 44KB
  • 下载

mysql中组内排序编号的一种实现方法。

编程环境:win7+navicat自带的存储过程编辑平台即根据commodity_id和bs_flag为优先级来进行排序、。之后统计每组的持仓总量、组内名次和组内成员数、客户编码的连接。组内成员数用c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:系统单据编号的几种实现方法
举报原因:
原因补充:

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