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