oracle(plsql)生成流水號(hào)
CREATE OR REPLACE FUNCTION fn_no_make(v_prefix VARCHAR2,
v_table_name VARCHAR2,
v_number_col VARCHAR2)
/*
* v_prefix: 編碼前綴兩位
* v_table_name:編碼所在表名
* v_number_col:編碼所在列名
*/
RETURN VARCHAR2 IS
v_old_no VARCHAR2(50); --原編碼
v_new_no VARCHAR2(50); --新編碼
v_old_num NUMBER; --原編碼后三位編號(hào)
v_new_num VARCHAR2(10); --新編碼后三位編號(hào)
v_date_no VARCHAR2(10); --當(dāng)前日期編號(hào)
v_sql VARCHAR2(4000);
BEGIN
v_sql := 'SELECT MAX(' || v_number_col || ') FROM ' || v_table_name;
EXECUTE IMMEDIATE v_sql INTO v_old_no;
v_sql := 'SELECT TO_CHAR(SYSDATE,''YYYYMMDD'') FROM DUAL';
EXECUTE IMMEDIATE v_sql INTO v_date_no;
v_old_num := to_number(substr(v_old_no, 12, 3));
v_new_num := lpad(to_char(v_old_num+1), 3, '0');
IF v_old_no IS NULL OR substr(v_old_no, 3, 8) <> v_date_no THEN
v_new_no := v_prefix || v_date_no || '-' || '001';
ELSE
v_new_no := v_prefix || v_date_no || '-' || v_new_num;
END IF;
RETURN v_new_no;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END fn_no_make;
相關(guān)文章
詳解Oracle數(shù)據(jù)庫(kù)中自帶的所有表結(jié)構(gòu)(sql代碼)
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)中自帶的所有表結(jié)構(gòu),本文給大家介紹的非常詳細(xì),代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)
相信大家無(wú)論是開(kāi)發(fā)、測(cè)試還是運(yùn)維過(guò)程中,都可能會(huì)因?yàn)檎`操作、連錯(cuò)數(shù)據(jù)庫(kù)、用錯(cuò)用戶、語(yǔ)句條件有誤等原因,導(dǎo)致錯(cuò)誤刪除、錯(cuò)誤更新等問(wèn)題。當(dāng)你捶胸頓足或嚇得腿軟時(shí),肯定希望有辦法來(lái)恢復(fù)這些數(shù)據(jù)。oracle就提供了一些強(qiáng)大的方法或機(jī)制,可以幫到有需要的你。2016-12-12EF 配置Oracle數(shù)據(jù)庫(kù)的具體操作方法
下面小編就為大家?guī)?lái)一篇EF 配置Oracle數(shù)據(jù)庫(kù)的具體操作方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04Oracle數(shù)據(jù)庫(kù)服務(wù)器修改操作系統(tǒng)時(shí)間的注意事項(xiàng)詳解
在本篇文章里小編給大家整理的是一篇關(guān)于Oracle數(shù)據(jù)庫(kù)服務(wù)器修改操作系統(tǒng)時(shí)間的注意事項(xiàng)詳解,需要的朋友們可以參考下。2020-03-03Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例
這篇文章主要介紹了Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例,包含代碼實(shí)例,而且小編已經(jīng)測(cè)試過(guò)了哦,需要的朋友可以參考下2014-07-07Oracle歸檔日志寫(xiě)滿(ora-00257)了怎么辦
今天在使用oracle數(shù)據(jù)庫(kù)做項(xiàng)目時(shí),突然報(bào)錯(cuò):ORA-00257: archiver error. Connect internal only, until freed,該問(wèn)題如何解決呢?經(jīng)過(guò)本人一番折騰此問(wèn)題還要?dú)w檔于日志滿了,下面小編把Oracle歸檔日志寫(xiě)滿(ora-00257)的解決辦法在此分享給大家供大家參考2015-10-10VMware中l(wèi)inux環(huán)境下oracle安裝圖文教程(一)
剛剛接觸ORACLE的人來(lái)說(shuō),從那里學(xué),如何學(xué),有那些工具可以使用,應(yīng)該執(zhí)行什么操作,一定回感到無(wú)助。所以在學(xué)習(xí)使用ORACLE之前,首先來(lái)安裝一下ORACLE 10g,在來(lái)掌握其基本工具。俗話說(shuō)的好:工欲善其事,必先利其器。作為一個(gè)新手,我們還是先在VMware虛擬機(jī)里安裝吧。2014-08-08Oracle數(shù)據(jù)庫(kù)的啟動(dòng)與關(guān)閉方法
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)的啟動(dòng)與關(guān)閉方法,需要的朋友可以參考下2013-07-07