台灣最大程式設計社群網站
線上人數
550
 
會員總數:246043
討論主題:189631
歡迎您免費加入會員
討論區列表 >> Oracle >> 日期+流水號0001
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
日期+流水號0001
價值 : 50 QP  點閱數:4090 回應數:6
樓主

小咪
初學者
40 66
854 79
發送站內信

請問各位版大,ORACLE有什麼方式可以達到以下需求,請指教,謝謝
主鍵為當天日期+流水號...隔日...流水號從0001開始
例如:201308190001,201308190002,201308190003......當天的流水號往下加
隔天201308200001,201308200002......

本篇文章發表於2013-08-19 20:19
1樓
回應

fantasy
捐贈 VP 給 fantasy 檢舉此回應
建立一個Seqence的Table,然後用Function來取號

-- Create table
create table XXX_SEQUENCE_MST
(
seq_type NUMBER not null,
seq_date DATE not null,
current_seq NUMBER
);
-- Create/Recreate indexes
create unique index XXX_SEQUENCE_MST_U1 on XXX_SEQUENCE_MST (seq_type, seq_date);


CREATE OR REPLACE FUNCTION XXX_GET_SEQ(P_SEQ_TYPE IN VARCHAR2
,P_SEQ_DATE IN DATE) RETURN NUMBER IS
V_SEQ NUMBER;
BEGIN
BEGIN
UPDATE XXX_SEQUENCE_MST S
SET S.CURRENT_SEQ = S.CURRENT_SEQ + 1
WHERE S.SEQ_TYPE = P_SEQ_TYPE
AND S.SEQ_DATE = P_SEQ_DATE
RETURNING TO_NUMBER(TO_CHAR(S.SEQ_DATE, 'YYYYMMDD') || LPAD(S.CURRENT_SEQ, 3, '0')) INTO V_SEQ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO XXX_SEQUENCE_MST
(SEQ_TYPE
,SEQ_DATE
,CURRENT_SEQ)
VALUES
(P_SEQ_TYPE
,P_SEQ_DATE
,1);
END;

COMMIT;

RETURN V_SEQ;
END;
本篇文章回覆於2013-08-20 10:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

fantasy
捐贈 VP 給 fantasy 檢舉此回應
更新


本篇文章回覆於2013-08-20 10:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

小咪
檢舉此回應
謝謝版大的指導...我是否需要寫TRIGGER觸發??
本篇文章回覆於2013-08-24 14:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

urbane
檢舉此回應
SELECT :s_ymd
|| TRIM (
TO_CHAR (TO_NUMBER (NVL (MAX (SUBSTR (a1, 9)), 0)) + 1, '0000'))
FROM a
WHERE SUBSTR (a1, 1, 8) = :s_ymd;
:s_ymd - 日期.ex.20130828
a1 - 主鍵
a - table
本篇文章回覆於2013-08-28 15:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

fantasy
捐贈 VP 給 fantasy 檢舉此回應
在您要Insert 單號資料的同時,call function取號就可以了,盡量別使用Trigger
本篇文章回覆於2013-08-29 13:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

小咪
檢舉此回應
請問版大..我寫了一個procedure...但是出現以下錯誤...不知該如何更改
請版大協助..謝謝!!

錯誤(7,3): PL/SQL: SQL Statement ignored
錯誤(10,49): PL/SQL: ORA-01786: 不可在這個查詢表示式中使用 FOR UPDATE
本篇文章回覆於2013-10-02 00:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.