Oracle
出自ProgWiki
Oracle,參照:『Database 維基百科~Oracle Database』。
目錄 |
Oracle的版本種類
- Oracle Database Express Edition或名Oracle Database XE(免費版)
- Oracle Database Standard Edition One(1~400人用版本)
- Oracle Database Standard Edition (1~1000人用版本)
- Oracle Database Enterprise Edition (企業版)
- Oracle Lite(可攜式裝置的移動用資料庫版本)
- 其它詳見[1]
相關文件
相關工具
- (Oracle官方版本的免費開發工具,以Java為基礎,可跨平台)
參考資料
- 香港學網 HKLN.net(內含Oracle SQL 教學)
- Oracle System Tables
- Oracle数据库drsys、tools、xdb、cwmlite、odm的作用
驅動程式
- ADO.NET
- ODBC
- JDBC
資料清理
民國與西元兩用的日期欄位,清理成西元日期
- 範例:當Table a 的out_date欄位,裡頭同時有民國與西元的日期值,欲清理成都西元日期。
CASE WHEN (EXTRACT(YEAR FROM a.out_date)>1900) THEN a.out_date ELSE ADD_MONTHS(a.out_date, 1911*12) END AS out_date,
空值(Null)防止
- 範例:當Table a 的desc欄位,欲清理成當有空值時,以空字串取代之。
NVL(a.DESC,'') AS DESC,
或
COALESCE(a.DESC,'') AS DESC,
字串的數值做+0.1的遞增
- 由於'0.0' +0.1 會變 .1,所以正確的算法應為下列這樣
TRIM(TO_CHAR(TO_NUMBER('0.0')+ 0.1, '9990.9'))
FAQ
安裝完Oracle的Client之後,無法連進資料庫
- 需使用【Configuration and Migration Tools】→【Net Manager】,在【區域】→【服務命名】的地方建立網路服務。
Oracle-Server搬IP,跨不同DB-Sever的Table無法在Select時Join
- 需更改Oracle的DB Link設定檔,通常在
/oracle/OraHome/network/admin/tnsnames.ora
ORA-00911: 字元無效
- 在透過 System.Data.OracleClient 操作 Oracle時, select 的查詢SQL字串最後不可有分號字元【;】,不然即會出現此錯誤訊息。
Oracle與自動遞增值欄位
- 因為Oracle在Create Table時,沒有類似
- MS-SQL 的 IDENTITY(1,1)
- DB2 的 GENERATED ALWAYS AS IDENTITY
- MySQL 的 AUTO_IDENTITY
- 所以需在 Insert 時做額外的處理,例如:
OCI-22053溢出錯誤
- 當把Oracle的輸出接到ASP.NET去顯示時,有時候會因為數值的小數點後位數太多,導致.NetFramework無法正常轉換數值。解法是在Oracle下Select時,使用ROUND()限制小數點後的位數。例如:限制1/3的輸出到小數點後2位,
--原本的 SELECT 1/3 FROM DUAL --限制後 SELECT ROUND(1/3,2) FROM DUAL
MD5計算
- Oracle MD5 函数(要先把 DBMS_OBFUSCATION_TOOLKIT.md5 包成函數來用)