Oracle生成流水號函式

2021-09-06 19:37:35 字數 3467 閱讀 9779

1

:日期範圍上

smalldatetime的有效時間範圍1900/1

/1~2079/6

/6datetime的有效時間範圍1753/1

/1~9999/12

/312:精準度上

smalldatetime只精準到分,而datetime則可精準到3位的毫秒。

3:儲存空間上

smalldatetime占用4個位元組,前2個位元組儲存base date(2023年1月1日)之後的天數。後2個位元組儲存午夜後的分鐘數。

datetime占用8個位元組,前4個位元組儲存base date(即2023年1月1日)之前或之後的天數,後4個位元組儲存午夜後的毫秒數

oracle生成流水號函式

create

orreplace

function fn_no_make(v_type varchar2

, v_number_col

varchar2

, v_table_name

varchar2)/*

* 引數說明:

* v_type: 編碼字首

* v_number_col:編碼所在列名

* v_table_name:編碼所在表名

*/return

varchar2

isv_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) <

5loop

v_new_num :='

0'||v_new_num;

endloop;

if v_old_no is

null

orsubstr(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;

endif;

return

(v_maked_no);

exception

when others then

dbms_output.put_line(sqlerrm);

endfn_no_make;

1.資料庫匯入,匯出命令

資料匯出:

a. 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d:\daochu.dmp中

exp test/test@oracle_192.168.28.1

file

=d:\daochu.dmp full=y

b. 將資料庫中system使用者與sys使用者的表匯出

exp test/test@oracle_192.168.28.1

file

=d:\daochu.dmp owner=

(system,sys)

資料匯入:

a 將d:\daochu.dmp 中的資料匯入 test資料庫中。

imp dev

/dev@oracle_192.168.28.2

file

=d:\daochu.dmp

imp dev

/dev@oracle_192.168.28.2

full

=y file

=file

= d:\data\newsmgnt.dmp ignore=

y 上面可能有點問題,因為有的表已經存在,然後它就報錯,對該錶就不進行匯入。

在後面加上 ignore

=y 就可以了。

b 將d:\daochu.dmp中的表table1 匯入

imp dev

/dev@test

file

=d:\daochu.dmp tables=

(table1)

2.資料庫表中clob,blob 匯入匯出命令

exp 資料庫使用者名稱/密碼@配置名稱

file

=輸出檔案路徑 log

=日誌檔案路徑 tables=(資料庫表名) query=

\"查詢條件\"

imp 資料庫使用者名稱

/密碼@配置名稱

file

=輸入檔案路徑 log

=日誌檔案路徑 tables=(資料庫表名) ignore=

yexp test/test@oracle_192.168.28.1

file

=c:\11.dmp log

=c:\11.log tables=(table1) query=\"where createdby=

'sysadmin

'and to_char(createtime,'

yyyy-mm-dd

')='

2012-05-17'\"

imp dev

/dev@oracle_192.168.28.2

file

=c:\11.dmp log

=c:\121.log tables=(table1) ignore=y

用cmd.exe 執行就可以,注意的地方就是query 地方 \"

先執行exp 後執行imp

Oracle流水號生成函式

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

Oracle 生成流水號函式

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

Oracle 生成流水號

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