Oracle

出自 ProgWiki
前往: 導覽搜尋

Oracle,參照:『Database 維基百科~Oracle Database』。

Oracle的版本種類

相關文件

相關工具

(Oracle官方版本的免費開發工具,以Java為基礎,可跨平台)

參考資料

驅動程式

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之後,無法連進資料庫

  1. 需使用【Configuration and Migration Tools】→【Net Manager】,在【區域】→【服務命名】的地方建立網路服務。

Oracle-Server搬IP,跨不同DB-Sever的Table無法在Select時Join

  1. 需更改Oracle的DB Link設定檔,通常在
/oracle/OraHome/network/admin/tnsnames.ora

ORA-00911: 字元無效

  • 在透過 System.Data.OracleClient 操作 Oracle時, select 的查詢SQL字串最後不可有分號字元【;】,不然即會出現此錯誤訊息。

Oracle與自動遞增值欄位

  1. 因為Oracle在Create Table時,沒有類似
    • MS-SQL 的 IDENTITY(1,1)
    • DB2 的 GENERATED ALWAYS AS IDENTITY
    • MySQL 的 AUTO_IDENTITY
  2. 所以需在 Insert 時做額外的處理,例如:
    ORACLE-BASE - Oracle AutoNumber And Identity Functionality

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計算

討論區