正在看的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>语句块 这里为了更为方面的说明过程的运用,下面给出一个示例: 问题:假设有一张表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>的编程中非常的重要。其定义为:用游标来指代一个DML <a href="https://www.jb51.cc/tag/sql/" target="_blank" class="keywords">sql</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> 其含义是定义一个游标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/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/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>@H_<a href="https://www.jb51.cc/tag/502/" target="_blank" class="keywords">502</a>_17@<p align='center'><b><a href="https://www.jb51.cc/tag/shangyiye/" target="_blank" class="keywords">上一页</a></b>@H_<a href="https://www.jb51.cc/tag/502/" target="_blank" class="keywords">502</a>_17@
@H_<a href="https://www.jb51.cc/tag/502/" target="_blank" class="keywords">502</a>_17@
原文链接:https://www.f2er.com/oracle/65916.html