經典的print table學習

2021-08-02 04:53:39 字數 1895 閱讀 9604

最近上班路上讀《oracle效能優化與診斷案例精選》,發現eygle引用了乙個非常方便的工具,原作者是大名鼎鼎的tom,更加引起了我的關注。

我理解一些工具是方便了我們日常的工作需求,但同時由於其封裝了一些細節,因此若只是知道用法,不知道實現原理,對於個人來說,浪費了一次鍛鍊的機會,因為往往這些經典的工具,蘊含著一些可以借鑑的邏輯,以及設計思想,所謂「觸類旁通」,才能增加我們的戰鬥力。

這個工具是乙個儲存過程,print_table,用於格式化列印sql結果,我們看下常規檢索v$database檢視的效果,

若不使用col格式化一些字段,輸出是亂的,沒有可讀性。

看下使用這個儲存過程,

非常整齊,不用圖形化工具,就可以使用sqlplus讀了。

這篇帖子中,tom發布了這個儲存過程,

原版,儲存過程接受兩個引數,乙個是sql語句,乙個是日期的格式化,預設值是』dd-mon-yyyy hh24:mi:ss』,

定義了乙個內聯的儲存過程restore,用於指令碼執行完成恢復配置,包括cursor_sharing引數、nls_date_format引數,以及關閉游標。

若輸入引數p_date_fmt不為空,則需要儲存系統預設的nls_date_format,用於restore,

為了讓這個儲存過程,執行的sql語句能用上繫結變數,減小硬解析,設定cursor_sharing為force,

解析和描述sql語句原文,逐字段來定義,其中113是blob型別,此處不適用,按照4000位元組定義,

逐字段來列印每一列,因為dbms_output僅列印255個字元/行,因此此處列顯示200個字元擷取了,同時列名右補空格滿足30位,

執行完成/出現異常時則呼叫了restore,

tom則形容這工具是最cool的列印語句指令碼,

當然儲存過程中任何地方,均可以自定義,例如對於判斷字段屬性blob,可以設定任何自己需要的格式,包括日期格式,例如書中使用的是刪除日期格式化引數的版本,

執行儲存過程有乙個前提,設定serveroutput為on,tom建議可以將此設定加入sqlplus的預處理中,編輯login.sql,

總結:

(1) 經典的指令碼,除了方便使用,往往包含了經典的邏輯、設計思想,有些可以借鑑,可以根據需求自定義,觸類旁通,充分發揮這些指令碼的價值。

(2) 執行儲存過程,需要設定serveroutput為on,才能顯示輸出。

MVC日積月累 經典學習

用檢視呈現ui 檢視可以不包含任何應用邏輯或者資料庫檢索 所有的應用邏輯都可以在controller中進行處理。檢視通過使用controller類在呼叫renderview方法的時候提供檢視相關資料物件呈現ui public void categories 禁止訪問views目錄 為了在你的asp....

儒家經典學習筆記

心理 就是一場 說真話的遊戲 心理問題的病根千篇一律,都在於自欺與欺人的謊話交織成一片 綿密的網,只有靠絕對誠實的氣氛才能消滅。心理 就是 說真話的遊戲 派克 心靈地圖 全然誠實的生活,包括不斷的反省,確定我們所做的溝通 不單是字眼,也包括說話的方式 都盡可能反映我們認識的現實。派克 心靈地圖 縫禍...

機器學習經典演算法

函式名稱均為sklearn庫中的函式 1.線性回歸演算法 linearregression 其中常用的有 ridge 嶺回歸演算法,multitasklasso 多工lasso回歸演算法,elasticnet 彈性網眼演算法,lassolars lars套索演算法,orthogonalmatchin...