国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

借用小小的一個問題-談談Oracle理論基礎學習的重要

2024-08-29 13:53:37
字體:
來源:轉載
供稿:網友
Oracle的學習可不是一件容易事,特別是理論的知識,不僅枯燥,而且很多抽象的問題經常讓我們的Oracle學習者感到各種各樣的困惑,從而讓我們的學習者對自己產生懷疑,從而放棄理論的學習,而僅僅局限在一些很膚淺的做實驗的學習中。前幾天就和一兩個朋友討論過為什么理論性的學習網友們不感冒,卻僅僅只是局限在做實驗的學習中。 而很多網友又反應做過了實驗,就只會做實驗了,而為什么做,里面每一步有什么作用卻一點都不了解。 這就是沒有好好學習理論導致的。 我讀大學是學習化學的,化學里經常要做實驗,實驗里的每個步驟都以理論為依據的, 當時上課的時候,老師都是在實驗過程前,標注好實驗的依據,實驗中的每個環節的知識點,已經實驗最后的結論,這樣的實驗才是一個完整的實驗。 當然,沒有老師的這些基礎知識的理論,我們完全照著實驗圖解來做也可以做出來,但是這樣的實驗僅是得到最后的一個實驗產物,或者失敗, 除了多聞了一下實驗室里藥品的聞到,還得到了其他的什么呢?

下面我通過一個小小的問題做實例,談談Oracle理論學習的重要性。

有一個網友在論壇里提出了這樣一個問題

原問題見“ Oracle中可不可以用一個Select語句,查出Oracle自帶的所有函數名稱 ”

想通過select語句找到所有內嵌的函數,其實就是查詢Oracle的數據字典表了。這個問題我還是第一次遇到過,雖然對這個問題還沒有確定的答案,但是,但是作為管理平時對Oracle的數據字典的理論指導我一步一步找到答案。

在Oracle數據庫里,對PLSQL的段,function,PRocedure,package里的function和procedure,沒有分開進行管理,都是通過procedure系列的數據字典表進行管理的。所以這里的答案應該就在這里找,繼續深入,在Oracle里內嵌的對象都是在一個名為STANDARD的package進行定義的,我們來看看dba_procedure的表的結構

SQL> desc dba_procedures

Name           Type         Nullable Default Comments                                                       

-------------- ------------ -------- ------- --------------------------------------------------------------

OWNER          VARCHAR2(30)                                                                                 

OBJECT_NAME    VARCHAR2(30)                  Name of the object : top level function/procedure/package name

PROCEDURE_NAME VARCHAR2(30) Y                Name of the procedure                                          

AGGREGATE      VARCHAR2(3)  Y                Is it an aggregate function ?                                  

PipELINED      VARCHAR2(3)  Y                Is it a pipelined table function ?                             

IMPLTYPEOWNER  VARCHAR2(30) Y                Name of the owner of the implementation type (if any)          

IMPLTYPENAME   VARCHAR2(30) Y                Name of the implementation type (if any)                       

PARALLEL       VARCHAR2(3)  Y                Is the procedure parallel enabled ?                            

INTERFACE      VARCHAR2(3)  Y                                                                               

DETERMINISTIC  VARCHAR2(3)  Y                                                                               

AUTHID         VARCHAR2(12) Y                                   

這里可以看到Object_name這個字段的描述

Name of the object : top level function/procedure/package name 頂層的package name。

根據這里的描述 我們可以看到,如果是在STANDARD這個表里建立的話,那么我們用OBJECT_name就可以查詢到這里我們需要的結果了。

用以下的sql

select * from dba_procedures where object_name = 'STANDARD'

有很多的重復記錄,加上distinct即可

最后的sql也就是

select distinct procedure_name from dba_procedures where object_name = 'STANDARD'

就是我們的最后的答案。

這個問題并不是一個復雜的問題,但是這里我們可以看到,有時我們解決問題的時候,如果對理論基礎有比較多的了解的話,可以讓我們有一個很清晰的思考和分析的方向,而根據這個方向,我們要找到我們的答案,就方便的多了。這里的這個問題就是如此,有興趣的朋友可以在google上搜尋一下,google上是沒有答案的。

基礎理論對我們的重要性就在此, 有很多的朋友平時對基礎理論不是特別看中,相反的有很多網友僅僅只是通過實例操作和做實驗來進行,這個是一個不正確的認識,的確實驗和實例相對于理論學習更具體,而且對著實驗做,一步一步,描述的清楚,而且學起來又簡單,但是對于龐大的知識體系,比如說Oracle,不同的case導致不同的結果,單憑一個小小的實驗很難深入到真正的Oracle體系,你做的個這個實驗可能改變小小的一點,就會導致另外的表現,而必須用另外的方式去解釋和解決。 如果你的知識點是以單個點為基礎的,那么可想而知,如此窄的認知,在千變萬化的組合面前就顯的太單薄叻, 我們只有通過基礎理論的加深,把我們單一的知識點匯集和深入到線,甚至面的基礎上,這樣的認知才是有力度的。才能在復雜紛亂的情況下,找到問題的本質。Oracle學習之道就在此,理論為主,實驗為輔,有理論的實驗才是一個有意義的實驗。不要做完了實驗,是看到個成功和失敗。其他的什么都沒有印象叻。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉阴县| 湛江市| 广德县| 华池县| 磴口县| 榕江县| 沿河| 蒙山县| 云南省| 防城港市| 隆尧县| 额尔古纳市| 渝中区| 灌云县| 额尔古纳市| 当阳市| 兴安盟| 朝阳区| 盐源县| 永福县| 如东县| 益阳市| 遵化市| 德州市| 红原县| 探索| 黄冈市| 南澳县| 阳新县| 若尔盖县| 资源县| 英吉沙县| 扶沟县| 朝阳市| 杭锦后旗| 甘泉县| 衡水市| 夹江县| 泽普县| 瑞昌市| 增城市|