1:日期范圍上 smalldatetime的有效時間范圍1900/1/1~2079/6/6 datetime的有效時間范圍1753/1/1~9999/12/31 2:精准度上 smalldatetime只精准到分,而datetime則可精准到3位的毫秒。 3:存儲空間上 smalldatetime占用4個字節,前2個字節存儲base date(1900年1月1日)之后的天數。后2個字節存儲午夜后的分鍾數。 datetime占用8個字節,前4個字節存儲base date(即1900年1月1日)之前或之后的天數,后4個字節存儲午夜后的毫秒數 Oracle生成流水號函數 CREATE OR REPLACE 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 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; 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=y exp 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
