微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle PL/SQL入门慨述

正在看的ORACLE教程是:Oracle PL/sql入门慨述。

一、PL/sql出现的目的   结构化查询语言(StructuredQueryLanguage,简称sql)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单的调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。然而,对于有些复杂的业务流程又要求相应的程序来描述,那么4GL就有些无能为力了。PL/sql的出现正是为了解决这一问题,PL/sql是一种过程化语言,属于第三代语言,它与C,C++,Java等语言一样关注于处理细节,因此可以用来实现比较复杂的业务逻辑。   本教程分两部分,第一部分主要对PL/sql的编程基础进行讨论,第二部分结合一个案例来讲解PL/sql编程。希望读者阅读本文后能够对PL/sql编程有一个总体上的认识,为今后深入PL/sql编程打下一个基础。   二、PL/sql编程基础   掌握一门编程语言首要是要了解其基本的语法结构,即程序结构、数据类型、控制结构以及相应的内嵌函数(或编程接口)。   1、PL/sql程序结构   PL/sql程序都是以块(block)为基本单位。如下所示为一段完整的PL/sql块:
  从上面的PL/sql程序段看出,整个PL/sql块分三部分:声明部分(用declare开头)、执行部分(以begin开头)和异常处理部分(以exception开头)。其中执行部分是必须的,其他两个部分可选。无论PL/sql程序段的代码量有多大,其基本结构就是由这三部分组成。   2、变量声明与赋值   PL/sql主要用于数据库编程,所以其所有数据类型跟oracle数据库里的字段类型是一一对应的,大体分为数字型、布尔型、字符型和日期型。为方便理解后面的例程,这里简单介绍两种常用数据类型:number、varchar2。   number   用来存储整数和浮点数。范围为1E-130~10E125,其使用语法为:
  其中(precision,scale)是可选的,precision表示所有数字的个数,scale表示小数点右边数字的个数。   varchar2   用来存储变长的字符串,其使用语法为:
  其中size为可选,表示该字符串所能存储的最大长度。   在PL/sql中声明变量与其他语言不太一样,它采用从右往左的方式声明,比如声明一个number类型的变量v_id,那其形式应为:
  如果给上面的v_id变量赋值,不能用”=”应该用”:=”,即形式为:

[NextPage] 一、PL/sql出现的目的   结构化查询语言(StructuredQueryLanguage,简称sql)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单的调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。然而,对于有些复杂的业务流程又要求相应的程序来描述,那么4GL就有些无能为力了。PL/sql的出现正是为了解决这一问题,PL/sql是一种过程化语言,属于第三代语言,它与C,即形式为:

        [NextPage]                三、过程与<a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a>   PL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>中的过程和<a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a>与其他语言的过程和<a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a>的概念一样,都是为了执行一定的任务而组合在一起的语句。过程无返回值,<a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a>有返回值。其语法结构为: <BR>  过程:Createorreplaceprocedureprocname(参数列表)asPL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>语句块   <a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a>:Createorreplacefunctionfuncname(参数列表)return返回值asPL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>语句块   这里为了更为方面的说明过程的运用,下面给出<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>示例:   问题:假设有一张表t1,有f1和f2两个字段,f1为number类型,f2为varchar2类型,然后往t1里写两条记录,<a href="https://www.jb51.cc/tag/neirong/" target="_blank" class="keywords">内容</a>自定。 <BR>  至此,test_procedure存储过程已经完成,然后经过编译后就可以在其他PL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>块或者过程中<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>了。由于<a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a>与过程具有很大的相似性,所以这里就不再重复了。   四、游标   这里特别提出游标的概念,是因为它在PL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>的编程中非常的重要。其定义为:用游标来指代<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>DML <a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>操作返回的结果集。即当<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>对<a href="https://www.jb51.cc/tag/shujuku/" target="_blank" class="keywords">数据库</a>的<a href="https://www.jb51.cc/tag/chaxun/" target="_blank" class="keywords">查询</a>操作返回一组结果集时,用游标来标注这组结果集,以后通过对游标的操作来<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>结果集中的数据信息。定义游标的语法结构如下: <BR>  在本文第一段<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>中有一句话如下: <BR>  其含义是定义<a href="https://www.jb51.cc/tag/yige/" target="_blank" class="keywords">一个</a>游标c_emp,其代表着employee表中所有emp_id字段为3的结果集。当需要操作该结果集时,必须完成三步:打开游标、使用fetch语句将游标里的数据取出、<a href="https://www.jb51.cc/tag/guanbi/" target="_blank" class="keywords">关闭</a>游标。请参照本文第一段<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>的注释理解游标操作的三步骤。   五、其他概念   PL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>中包的概念很重要,主要是对一组<a href="https://www.jb51.cc/tag/gongneng/" target="_blank" class="keywords">功能</a>相近的过程和<a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a>进行封装,类似于面向对象中的名字空<a href="https://www.jb51.cc/tag/jiande/" target="_blank" class="keywords">间的</a>概念。   触发器是一种特殊的存储过程,其<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>者比较特殊,是当发生特定的事件才被<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>,主要用于多表之<a href="https://www.jb51.cc/tag/jiande/" target="_blank" class="keywords">间的</a>消息<a href="https://www.jb51.cc/tag/tongzhi/" target="_blank" class="keywords">通知</a>。   六、调试环境   PL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>的调试环境目前比较多,除了Oracle<a href="https://www.jb51.cc/tag/zidai/" target="_blank" class="keywords">自带</a>有调试环境<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>*plus以外,本人推荐TOAD这个工具,该工具<a href="https://www.jb51.cc/tag/yonghu/" target="_blank" class="keywords">用户</a>界面友好,可以提高程序的编制效率。   本文主要讲解PL/<a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</a>的基础部分,熟悉这部分<a href="https://www.jb51.cc/tag/neirong/" target="_blank" class="keywords">内容</a>后可以进行存储过程的编写和应用,对于提高<a href="https://www.jb51.cc/tag/shujuku/" target="_blank" class="keywords">数据库</a>服务器端的执行效率很有帮助。 <BR></P></p><p align='center'><b><a href="https://www.jb51.cc/tag/shangyiye/" target="_blank" class="keywords">上一页</a></b></p> 

        </p>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐