in

Darkthread

黑暗執行緒
All Tags » ORACLE (RSS)

Browse by Tags

  • ORACLE筆記-使用 CONNECT BY 呈現階層化資料

    很久很久以前(轉眼已十年惹)學會用 SQL 2005 Common Table Expression 呈現資料表中的階層式資料(組織圖、BOM表),當時還學到 ORACLE 有個 CONNECT BY 語法效果類似。說來慚愧,對它只停在「知道」的層次,沒實地玩過,直到今天遇到必須使用 ORACLE 查詢展開組織圖的需求卻寫不出來,確認了「其實我不會」。 亡羊補牢,猶未晚矣,特筆記今天的實地演練心得備忘。 測試資料直接借用 CTE 文章裡的 BOM 範例: 使用以下指令產生測試資料: CREATE TABLE BOMDemo ( PartNo VARCHAR2(8), PartName NVARCHAR2...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 04-20-2018
  • 元件開箱:Managed ODP.NET for Linux

    .NET Core 版本已推進到 2.0,但對我而言,相關元件、程式庫的支援度才是能否用於工作的關鍵。最近有則好消息 – Oracle 在這個月推出 ODP.NET Core 12.2 Beta ,感覺在工作專案使用 .NET Core 的日子又更近了~ 工作環境常會存取 Oracle 資料庫,.NET Core 再好用,連不上資料庫也是白搭。ODP.NET Core 補上這塊拼圖,背後的另一層意義是 Oracle 也已正式將 .NET Core 納入支援平台!(雖然 Oracle 支援 .NET 的腳步向來不快,過去常需靠第三方程式庫墊檔,例如 千呼萬喚始出來的 Oracle 官方版 Entity...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 02-26-2018
  • 【茶包射手日記】老 Bug 新感受之 ODP.NET 版本問題

    同事報案。某個使用 Managed ODP.NET 的測試網站吐出以下錯誤 Error: The type initializer for 'OracleInternal.Common.ProviderConfig' threw an exception. 同事一度懷疑跟 ODP.NET 版本有關,但依經驗,如為版本問題錯誤訊息會確指出所需元件全名、版號等資訊。為調查問題,我直接在 IIS主機 現場撰寫 Tets.aspx 偵錯 ,測試程式一用到 new Oracel.ManagedDataAccess.Client.OralceConnection() 就吐出以下錯誤: Configuration...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 02-09-2018
  • C# 讀取 dbms_output 效能強化版

    前文 介紹過使用 C# 讀取 dbms_output 寫入內容,範例留了一個小尾巴,跑迴圈連資料庫犯了效能大忌,應改成一次執行或查詢取回才上道。 dbms_output.get_lines() 允許一次取得多筆訊息,但傳回型別為 TYPE DBMSOUTPUT_LINESARRAY IS VARRAY(2147483647) OF VARCHAR2(32767); 讀取要費點手腳,Oracle 生手經過一番研究,試出四種不同做法,就當練功吧。 使用 ODP.NET OracleParameter 接收 OracleParameter 有個 CollectionType 屬性,將屬性型別設為 OracleDbType...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-12-2018
  • TIPS - C# 讀取 Oracle dbms_output.put_line 輸出資訊

    使用 dbms_output.put_line() 列印執行資訊是常用的 Oracle Stored Procedure 偵錯技巧,以下 Procedure 範例在DELETE 及 INSERT 後透過 dbms_output.put_line() 印出影響資料筆數,概念跟在程式碼裡塞入一堆 Debug.Print、MsgBox、alert() 差不多,是執行期間追查問題的重要線索: create or replace procedure JeffDBJobTest1 is begin delete from JEFFTEST where idx = 32; dbms_output.put_line...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-11-2018
  • Oracle 自訂函式查詢加速密技–Scalar Subquery Caching

    在 SELECT 指令對欄位執行自訂函式行運算通常很傷效能,但實務上無法完全避免。查詢一萬筆資料代表要呼叫自訂函式一萬次,若函式包含資料表查詢,如同在迴圈裡跑 SQL,是典型的效能殺手,經驗裡也是許多複雜查詢逾時的主因。 見識到同事露了一手,簡單加幾個字元一口氣將內含自訂函式的 Oracle SELECT 加速數十倍! 瞠目結舌之餘,立馬實驗證明效果驚人,特筆記並分享如下。 以下為實驗環境,JeffTest 資料表有 IDX, N 兩個 NUMBER 欄位,先塞入 256 筆資料,IDX 由 0 - 255,N 則是 IDX 除 4 的餘數,依序為 0, 1, 2, 3, 0, 1, 2, 3...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-29-2017
  • 【茶包射手日記】ORACLE JOIN GROUP BY 子查詢爆慢疑案

    接獲同事報案,某段 Oracle 查詢偶發嚴重效能問題。查詢時資料表經由 JOIN 自身的 GROUP BY 子查詢挑出某日期前客戶最新的一筆資料: SELECT ccb.Key1, ccb.Key2, ccb.Key3, ccb.Key4, ccb.Key5, ccb.Col1, ccb.Col2, ccb.Col3, ccb.Col4, --...略... ccb.Col20 FROM MyTable ccb INNER JOIN ( SELECT Key0,Key1,Key2, Key3, MAX (Key4) as Key4,Key5 FROM MyTable WHERE Key4 <...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 07-20-2017
  • KB-當 WHERE AND/OR 條件遇上 NULL

    在 SQL 世界裡 NULL 性質特殊,行為獨特,過去就曾討論過: KB-詭異的NOT IN查詢,原來是NULL搞鬼 ORACLE, 你把空字串怎麼了 自以為至此對 NULL 認識已足,不料前兩天在 WHERE LIKE AND/OR 情境中遇上 NULL,一時意志動搖陷入迷惘,想必是認知還不夠深刻,再補篇 KB 吧! 先別急著看答案,大家猜猜以下 SQL 指令會得到什麼結果? select 'T1' , 'MATCH' from dual where null like '78' union select 'T2' , 'MATCH'...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 07-19-2017
  • COALESCE 發生字元設定不符合錯誤

    同事報案,Dapper 查詢 ORACLE 時使用 COALESCE() 遇到 ORA-12704: character set mismatch(字元設定不符) 錯誤。 我用以下程式成功重現問題:(jefftest2.t 欄位為 NVARCHAR2) static void Main( string [] args) { using (var cn = new OracleConnection(csStr)) { var list = cn.Query( "select 1 from jefftest2 where coalesce(t, :text) like '%'"...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 07-18-2017
  • ODP.NET 無法讀取 Oracle 欄位計算結果

    同事報案,使用 Dapper + ODP.NET 呼叫某 Procedure,以 Ref Cursor 取資料時出現型別轉換錯誤,一路深入追查,發現問題跟是否用了 Procedure、Ref Cursor、 Dapper 都沒有關係,錯誤發生在 ODP.NET 層。 有問題的查詢涉及幾個高精確度的欄位運動,經過一番簡化,我先找出用下列查詢可重現問題。 使用 PL/SQL Developer 查詢不會出錯,但使用 ODP.NET OracleDataReader dr["N"]、dr.GetDecimal(0)、dr.GetValue() 都會出現「指定的轉換無效」( Invalid...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 04-26-2017
第1頁,共11頁 (110個項目) 1 2 3 4 5 下一頁 > ... 最後一頁 »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems