系统单据编号介绍:
<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