麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle 中生成流水號的方法

2024-08-29 13:59:06
字體:
供稿:網(wǎng)友

思路:

通過一個流水號表,記錄當(dāng)前最大的流水號,以便下次取用。每次取號時,將流水號表更新成大的。

涉及的表:

  流水號表hp_no:  

 

字段 類型
TYPE_NAME VARCHAR2(100)
START_NO VARCHAR2(100)
CURRENT_NO VARCHAR2(100)

 

代碼:

1)通過函數(shù)得到最大值。 有三個參數(shù),

  第一個參數(shù)是類型,便于得到不同的流水號。

  第二個參數(shù)是前綴,用于在流水號前邊放置特別的字符。

  第三個參數(shù)是生成的流水號長度。

代碼

CREATE OR REPLACE FUNCTION Hp_Test_GetNo(P_TYPE_NAME IN VARCHAR2 DEFAULT '', --類型 參數(shù)1P_START_NO IN VARCHAR2, --前綴 參數(shù)2P_LENGTH IN NUMBER --得到流水號長度 參數(shù)3)RETURN VARCHAR2 --返回類型ISV_RESULT VARCHAR2 (100) := ''; --結(jié)果 變量1V_CURRENT_NO VARCHAR2 (100) := ''; --當(dāng)前值 變量2V_NUM NUMBER := 0; --補值 變量3V_START_NO VARCHAR2(100); --前綴 變量4V_ROWID VARCHAR2 (100); --要更新行的RowID 變量4BEGINV_START_NO :=P_START_NO; --參數(shù)值賦給變量SELECT COUNT (*)INTO V_NUMFROM HP_NOWHERE TYPE_NAME = P_TYPE_NAME AND START_NO = P_START_NO; --得到類型與前綴相同值的數(shù)量,主要用于判斷是否產(chǎn)生過流水號--判斷是否有資料 沒有則產(chǎn)生初始值插入庫中IF V_NUM = 0 --沒有記錄過時THENV_CURRENT_NO := LPAD ('1', P_LENGTH, '0'); --得到P_length長的0001流水號V_RESULT := V_CURRENT_NO; --將前綴與流水號相連起來INSERT INTO HP_NO(TYPE_NAME, START_NO, CURRENT_NO)VALUES (P_TYPE_NAME, P_START_NO, V_CURRENT_NO); --將新的最大值記錄下來ELSE SELECT ROWID, CURRENT_NO + 1INTO V_ROWID, V_CURRENT_NOFROM HP_NOWHERE TYPE_NAME = P_TYPE_NAME AND START_NO = P_START_NO; --得到最大值加1V_CURRENT_NO := LPAD (V_CURRENT_NO, P_LENGTH, '0'); UPDATE HP_NOSET CURRENT_NO = V_CURRENT_NOWHERE ROWID = V_ROWID; --更新最大值END IF; IF V_START_NO IS NULL OR V_START_NO='' THENV_RESULT := V_CURRENT_NO;ELSEV_RESULT :=V_START_NO || V_CURRENT_NO;END IF;RETURN V_RESULT;END;

使用存儲過程調(diào)用函數(shù)的方法:

代碼

--調(diào)用function存儲過程CREATE OR REPLACE PROCEDURE Hp_Pro_GetTestNo(v_FirstLetter in varchar2,v_Result out varchar2)ISv_FirstValue varchar2(30);v_SystDate varchar2(30);BEGINselect to_char(sysdate,'yyyymm') into v_SystDate from dual;v_FirstValue:=(v_FirstLetter || v_SystDate);v_Result:=hp_test_getno('HpTest' ,v_FirstValue,4);END;

結(jié)果:

  調(diào)用存儲過程Hp_Pro_GetTestNo('hp',4);

  結(jié)果為:hp2016060001

其它思考:

一、新增時無須顯示流水號,如得到得到連續(xù)流水號

方法:

  采用流水號子表,此表用于保存沒有用過的流水號。當(dāng)用戶取號時,首選判斷子表是否含有流水號,當(dāng)有時,取出一個,并刪除此個(防止別另外用戶取用);否則調(diào)用主表得到新流水號。

當(dāng)插入失敗則將當(dāng)前流水號保存到流水號子表中,供下次取用。

當(dāng)刪除時,將當(dāng)前流水號保存到流水號子表中,供下次取用。

二、新增時須顯示流水號,如得到得到連續(xù)流水號

方法:

  采用流水號子表,此表用于保存沒有用過的流水號。當(dāng)用戶取號時,首選判斷子表是否含有流水號,當(dāng)有時,取出一個,并刪除此個(防止別另外用戶取用);否則調(diào)用 主表得到新流水號。

當(dāng)用戶不保存或插入失敗則將當(dāng)前流水號保存到流水號子表中,供下次取用。

當(dāng)刪除時,將當(dāng)前流水號保存到流水號子表中,供 下次取用。


注:相關(guān)教程知識閱讀請移步到oracle教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美一级高潮 | 91av资源在线| 精品一区二区三区毛片 | 国产一区二区视频在线播放 | 成人做爰s片免费看网站 | 国产在线观看91精品 | 日本成人高清视频 | 午夜国产在线观看 | 精品一区二区久久久久久按摩 | 999久久国精品免费观看网站 | 中文字幕亚洲情99在线 | 久久精品国产亚洲7777 | 特级无码毛片免费视频尤物 | 午夜爱爱福利 | 久久久裸体视频 | 久久综合精品视频 | 毛片免费试看 | 久久人人97超碰国产公开结果 | 欧美成人精品一区二区三区 | 日日夜av| 欧美日韩国产成人在线 | 欧美精品久久久久久久多人混战 | 免费观看一级 | 国产一区二区三区在线观看视频 | 久久成人免费网 | 欧美精品一区二区三区久久久 | 欧美黄色片一级 | 中文字幕四区 | 国产羞羞视频 | 91在线视频播放 | 成人免费视频视频在线观看 免费 | 欧洲黄色一级视频 | 久久av免费| 91网址在线播放 | 欧美人与禽性xxxxx杂性 | 成人辣文 | 最新av在线播放 | 欧美毛片免费观看 | 成人在线视频一区 | 国产成人自拍视频在线 | 看免费的毛片 |