借用小小的一个问题-谈谈Oracle数据库理论基础学习的重要_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

借用小小的一个问题-谈谈Oracle理论基础学习的重要

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

黑客防线网安网讯:Oracle的学习可不是一件容易事,特别是理论的知识,不仅枯燥,而且很多抽象的问题经常让我们的Oracle学习者感到各种各样的困惑,从而让我们的学习者对自己产生怀疑,从而放弃理论的学习,而...

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学习之道就在此,理论为主,实验为辅,有理论的实验才是一个有意义的实验。不要做完了实验,是看到个成功和失败。其他的什么都没有印象叻。

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-12656-1.html
网站维护教程更新时间:2012-03-23 00:43:40  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer