Oracle 生成流水號函式

2021-09-01 10:30:48 字數 1411 閱讀 3506

[code="sql"][/code]create or replace function fn_no_make(v_type varchar2,

v_number_col varchar2,

v_table_name varchar2)

/** 編碼示例:djjt12090600003

* author: rock.et

* create date: 2012/09/06

* 引數說明:

* v_type: 編碼字首

* v_number_col:編碼所在列名

* v_table_name:編碼所在表名

*/return varchar2 is

v_old_no varchar2(50); --原編碼

v_old_num number; -- 原編碼後五位編號

v_new_num varchar2(10); --新編碼後五位編號

v_maked_no varchar2(50); --新編碼

v_date_no varchar2(20); --當前日期編號

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 substr(to_char(sysdate,''yymmdd''), 1, 6) as date_no from dual';

execute immediate v_sql

into v_date_no;

v_old_num := to_number(substr(v_old_no, 11, 5));

v_new_num := to_char(v_old_num + 1);

while length(v_new_num) < 5

loop

v_new_num := '0' || v_new_num;

end loop;

if v_old_no is null or

substr(v_old_no, 5, 6) <> v_date_no

then

v_maked_no := v_type || v_date_no || '00001';

else

v_maked_no := v_type || v_date_no || v_new_num;

end if;

return(v_maked_no);

exception

when others then

dbms_output.put_line(sqlerrm);

end fn_no_make;

Oracle流水號生成函式

使用oracle函式在建立表的時候自動加入生成的流水號 生成格式是 字首 年月日 00000 直接上 加注釋 create or replace function fn no make v type varchar2,v number col varchar2,v table name varcha...

Oracle生成流水號函式

1 日期範圍上 smalldatetime的有效時間範圍1900 1 1 2079 6 6datetime的有效時間範圍1753 1 1 9999 12 312 精準度上 smalldatetime只精準到分,而datetime則可精準到3位的毫秒。3 儲存空間上 smalldatetime占用4個...

Oracle 生成流水號

輔助表 rul sequence 表中資料如圖 輔助儲存過程 proc getseqence create or replace procedure proc getseqence seqcode in varchar2,returnnum out varchar2,messagecode out ...