日期:2014-05-17 浏览次数:21028 次
CREATE OR REPLACE procedure GetSerialNo RETURN VARCHAR2 IS
v_DateStr VARCHAR2(10); --系統日期對應的字串
v_SerialNum NUMBER(4); --流水序號
BEGIN
--取系統日期生成需要的字串
v_DateStr := TO_CHAR(SYSDATE, ('YYYYMMDD'));
--生成產生流水號的序號
BEGIN
SELECT Decode(LIN_STKM, v_DateStr, (MON_STKM + 1), 1)
INTO v_SerialNum
FROM astkm;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_SerialNum := 1;
INSERT INTO astkm (LIN_STKM, MON_STKM) VALUES (v_DateStr, v_SerialNum);
END;
--修改流水號參數
UPDATE astkm SET LIN_STKM = v_DateStr, MON_STKM = v_SerialNum;
COMMIT;
--得到需要的流水號
RETURN v_DateStr || Lpad(v_SerialNum, 4, '0');
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RETURN NULL;
END;
v_DateStr := TO_CHAR(SYSDATE, ('YYYYMMDD'));