国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Oracle - Oracle 中生成流水號(hào)的方法

Oracle 中生成流水號(hào)的方法

2019-12-28 15:22jerrylsxu Oracle

這篇文章主要介紹了Oracle 中生成流水號(hào)的方法 的相關(guān)資料,需要的朋友可以參考下

思路:

通過(guò)一個(gè)流水號(hào)表,記錄當(dāng)前最大的流水號(hào),以便下次取用。每次取號(hào)時(shí),將流水號(hào)表更新成大的。

涉及的表:

  流水號(hào)表hp_no:  

 

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

 

代碼:

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

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

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

  第三個(gè)參數(shù)是生成的流水號(hào)長(zhǎng)度。

代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
CREATE OR REPLACE FUNCTION Hp_Test_GetNo(
P_TYPE_NAME IN VARCHAR2 DEFAULT '', --類型 參數(shù)1
P_START_NO IN VARCHAR2, --前綴 參數(shù)2
P_LENGTH IN NUMBER --得到流水號(hào)長(zhǎng)度 參數(shù)3
)
RETURN VARCHAR2 --返回類型
IS
V_RESULT VARCHAR2 (100) := ''; --結(jié)果 變量1
V_CURRENT_NO VARCHAR2 (100) := ''; --當(dāng)前值 變量2
V_NUM NUMBER := 0; --補(bǔ)值 變量3
V_START_NO VARCHAR2(100); --前綴 變量4
V_ROWID VARCHAR2 (100); --要更新行的RowID 變量4
BEGIN
V_START_NO :=P_START_NO; --參數(shù)值賦給變量
SELECT COUNT (*)
INTO V_NUM
FROM HP_NO
WHERE TYPE_NAME = P_TYPE_NAME AND START_NO = P_START_NO; --得到類型與前綴相同值的數(shù)量,主要用于判斷是否產(chǎn)生過(guò)流水號(hào)
--判斷是否有資料 沒有則產(chǎn)生初始值插入庫(kù)中
IF V_NUM = 0 --沒有記錄過(guò)時(shí)
THEN
V_CURRENT_NO := LPAD ('1', P_LENGTH, '0'); --得到P_length長(zhǎng)的0001流水號(hào)
V_RESULT := V_CURRENT_NO; --將前綴與流水號(hào)相連起來(lái)
INSERT INTO HP_NO(TYPE_NAME, START_NO, CURRENT_NO)
VALUES (P_TYPE_NAME, P_START_NO, V_CURRENT_NO); --將新的最大值記錄下來(lái)
ELSE
SELECT ROWID, CURRENT_NO + 1
INTO V_ROWID, V_CURRENT_NO
FROM HP_NO
WHERE TYPE_NAME = P_TYPE_NAME AND START_NO = P_START_NO; --得到最大值加1
V_CURRENT_NO := LPAD (V_CURRENT_NO, P_LENGTH, '0');
UPDATE HP_NO
SET CURRENT_NO = V_CURRENT_NO
WHERE ROWID = V_ROWID; --更新最大值
END IF;
IF V_START_NO IS NULL OR V_START_NO='' THEN
V_RESULT := V_CURRENT_NO;
ELSE
V_RESULT :=V_START_NO || V_CURRENT_NO;
END IF;
RETURN V_RESULT;
END;

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

代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
--調(diào)用function存儲(chǔ)過(guò)程
CREATE OR REPLACE PROCEDURE Hp_Pro_GetTestNo
(
v_FirstLetter in varchar2,
v_Result out varchar2
)
IS
v_FirstValue varchar2(30);
v_SystDate varchar2(30);
BEGIN
select 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)用存儲(chǔ)過(guò)程Hp_Pro_GetTestNo('hp',4);

  結(jié)果為:hp2016060001

其它思考:

一、新增時(shí)無(wú)須顯示流水號(hào),如得到得到連續(xù)流水號(hào)

方法:

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

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

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

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

方法:

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

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

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

延伸 · 閱讀

精彩推薦
  • OracleOracle中的SUM用法講解

    Oracle中的SUM用法講解

    今天小編就為大家分享一篇關(guān)于Oracle中的SUM用法講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    gy1347700165111152020-04-11
  • OracleOracle中簡(jiǎn)單查詢、限定查詢、數(shù)據(jù)排序SQL語(yǔ)句范例和詳細(xì)注解

    Oracle中簡(jiǎn)單查詢、限定查詢、數(shù)據(jù)排序SQL語(yǔ)句范例和詳細(xì)注解

    這篇文章主要介紹了Oracle中簡(jiǎn)單查詢、限定查詢、數(shù)據(jù)排序SQL語(yǔ)句范例和詳細(xì)注解,對(duì)查詢語(yǔ)法一并做了介紹,需要的朋友可以參考下 ...

    junjie4062019-12-10
  • OracleOracle連接配置解讀

    Oracle連接配置解讀

    這篇文章主要介紹了Oracle連接配置解讀,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編...

    Jackgo4832020-04-16
  • Oracle關(guān)于Oracle多表連接,提高效率,性能優(yōu)化操作

    關(guān)于Oracle多表連接,提高效率,性能優(yōu)化操作

    這篇文章主要介紹了關(guān)于Oracle多表連接,提高效率,性能優(yōu)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    Mr_溫少2912020-12-20
  • Oracle深入ORACLE遷移到MYSQL的總結(jié)分析

    深入ORACLE遷移到MYSQL的總結(jié)分析

    本篇文章是對(duì)ORACLE遷移到MYSQL進(jìn)行了詳細(xì)的總結(jié)與分析,需要的朋友參考下 ...

    ORACLE教程網(wǎng)5702019-11-25
  • Oracle詳解Oracle自定義異常示例

    詳解Oracle自定義異常示例

    這篇文章主要介紹了詳解Oracle自定義異常示例的相關(guān)資料,需要的朋友可以參考下 ...

    星東爍2802019-12-27
  • Oracle關(guān)于SQL執(zhí)行計(jì)劃錯(cuò)誤導(dǎo)致臨時(shí)表空間不足的問題

    關(guān)于SQL執(zhí)行計(jì)劃錯(cuò)誤導(dǎo)致臨時(shí)表空間不足的問題

    故障現(xiàn)象:臨時(shí)表空間不足的問題已經(jīng)報(bào)錯(cuò)過(guò)3次,客戶也煩了,前兩次都是同事添加5G的數(shù)據(jù)文件,目前已經(jīng)達(dá)到40G,占用臨時(shí)表空間主要是distinct 和gro...

    數(shù)據(jù)庫(kù)教程網(wǎng)5672019-11-21
  • OracleOracle 12c Release 2 RAC 安裝 Oracle Linux 7

    Oracle 12c Release 2 RAC 安裝 Oracle Linux 7

    一、概述 本文主要闡述基于ASM 構(gòu)建 Oracle 12c RAC數(shù)據(jù)庫(kù)的過(guò)程說(shuō)明 1、系統(tǒng)版本要求 確保 Oracle Linux 版本為 6 或更高版本。 確保兩個(gè)節(jié)點(diǎn)的 Oracle Linux 內(nèi)核版...

    未知652023-10-12
主站蜘蛛池模板: 亚洲精品h | 五月天婷婷激情 | 久一在线| 黄色资源网站 | 免费午夜电影 | 四季久久免费一区二区三区四区 | 亚洲激情网站 | 国产成人精品一区二区三区四区 | 激情总合网 | 亚洲欧美日韩精品久久亚洲区 | 视频1区| 国产高清不卡 | 国语av在线| 欧美日韩成人在线视频 | 97天堂| 精品国产青草久久久久福利 | 亚洲一区精品在线 | 色在线电影 | 亚洲激情视频在线播放 | 亚洲国产高清美女在线观看 | 黄色免费在线网站 | 亚洲精品一区二三区不卡 | 国产精品视频 | 欧美午夜影院 | 精品久久一二三区 | 国产一区 | 极品粉嫩饱满一线天在线 | 国产精品久久久久久久久久久天堂 | 毛片网站大全 | 色嫩紧中文字幕在线 | 亚洲午夜精品 | 草久在线视频 | 精品一区二区三区四区 | 亚洲欧美高清 | a视频在线 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久综合激情 | 国产精品伊人影院 | www伊人| 久久久国产一区二区三区四区小说 | 欧美亚洲国产激情 |