[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 ...