登陆注册
31848700000014

第14章 PL/SQL编程基础(1)

6.1 PL/SQL的简介

PL/SQL(Procedure Language and SQL)是Oracle对SQL的一种扩充,它集成了程序化设计语言中的许多特性。SQL是一种存取Oracle数据库的语言,PL/SQL则将SQL的强大性和灵活性与过程化语言的过程性融为一体。PL/SQL通过增加在其他过程化语言中的结构来对SQL进行扩充,所以PL/SQL既具有对数据库存取功能比较强的特点,可以使用SQL语句中的查询语句和数据操纵语句对数据库进行操作,又具有过程化语言的条件判断、循环、出错处理等特点。PL/SQL是一个强大的事务处理语言,支持SQL中的DML语句及TCL语句(事务控制语句),但不支持DDL语句和DCL语句,不过可以使用Oracle内置包DBMSSQL执行DDL语句和DCL语句。

PL/SQL将Oracle服务器与其他工具结合起来,可以从各种工具和各种环境中访问Oracle数据库。PL/SQL不是一个独立的产品,而是嵌入在Oracle服务器和Oracle开发工具中的,所以在Oracle客户端的各种工具和服务器中都可以编写PL/SQL程序。

6.1.1 PL/SQL的优点

PL/SQL具备SQL的功能和SQL语言所不具备的过程化功能,主要优点如下。

过程化和模块化:将逻辑上相关的语句组织在一个PL/SQL程序块中。

使用过程化语言的控制结构:可以有条件地执行一系列语句、可以重复地执行一系列语句、使用显式游标处理多行查询返回结果中的每一行。

错误处理:使用EXCEPTION处理语句处理服务器的错误和用户自定义的错误。

可移植性:可以将程序移植到任何支持Oracle和PL/SQL的主机环境中。

集成:通过PL/SQL可以将前台和后台技术结合起来。

改善性能:PL/SQL可以改善一个应用的性能、减少网络的流量。

6.1.2 PL/SQL的特点

PL/SQL是一种高性能的事务处理语言,支持所有的事务控制命令(如:COMMIT、ROLLBACK等命令)。

可移植到任何Oracle的环境中,并且支持所有SQL数据操纵命令(如:SELECT、DELETE、UPDATE、INSERT等命令)。

使用Oracle所提供的特殊的PL/SQL程序包DBMSSQL可以处理SQL的DDL命令(如:CREATE、DROP、ALTER等命令)和DCL命令(如:GRANT、REVOKE等命令)。

PL/SQL支持所有SQL数据类型(如:NUMBER、VARCHAR2、DATE等类型)、SQL函数(如:SUBSTR、NEXTDAY、ROUND等函数)和各种运算符(如:IN、BETWEEN AND、LIKE等运算符)。

PL/SQL块可以被命名并存储在Oracle 服务器中,可以在另一个PL/SQL程序或SQL命令行中被存取和重用。

存储在服务器上的PL/SQL程序的安全性可以使用授权和回收权限进行管理。

注意:在PL/SQL中使用SELECT 语句的语法与标准SQL中的SELECT 语法有区别。其他PL/SQL所支持的SQL命令在标准SQL和PL/SQL中则没有区别。

标准SQL中的SELECT语法如下:

SELECT 列名,列名……

FROM 表

WHERE 条件……

而在PL/SQL中的SELECT 语法为:

SELECT 列名,列名……

INTO 变量1,变量2……

FROM 表

WHERE 条件……;

6.1.3 如何编写和编译PL/SQL程序块

因为PL/SQL是嵌入在Oracle服务器和Oracle开发工具中的,所以在Oracle客户端的各种工具和服务器中都可以编写PL/SQL程序。在客户端的PL/SQL Developer Tool开发工具、Developer6i开发工具或SQL*Plus工具中都可以编写PL/SQL块,在服务器端的PL/SQL DeveloperTool开发工具或SQL*Plus工具中也可以编写PL/SQL块。

以SQL*Plus工具为例,举例说明如何编写、编译和运行PL/SQL程序块,步骤如下:

启动SQL*Plus工具。单击“开始”→“程序”→“Oracle-OraHome92”→“Application Development”→“SQL Plus”,启动SQL*Plus工具,弹出登录窗口,要求输入用户名、口令和连接字符串。输入用户名为scott,口令为tiger,连接字符串是第4章介绍的网络服务名,输入ORCL1。此时出现SQL>提示符,表示SQL*Plus工具已连接到Oracle数据库。

在SQL>提示符下输入下列语句:

SQL>edit c:\plsqlblock1.sql

表示在C盘的根目录下编辑一个脚本文件plsqlblock1.sql,此时弹出一个窗口,询问此文件不存在,是否要建立一个新文件,选择“是”,系统启动记事本编辑此文件。

在记事本的编辑窗口中输入PL/SQL块的语句(PL/SQL块结构参见6.2.1.1节),在END结束符的下一行开头加“/”作为结束标志。

在记事本的编辑窗口中保存刚输入的PL/SQL块的语句,关闭该编辑窗口。

回到SQL>提示符,在该提示符下输入下列命令:

SQL>SET serveroutput ON

SQL>START c:\plsqlblock1.sql

首先激活dbmsoutput包,以便在PL/SQL块中可以引用dbmsoutput包将变量的值输出在屏幕上,接着编译和运行该PL/SQL块,查看该块是否有语法错误和逻辑错误。

如果显示已成功运行的提示信息,说明上述PL/SQL块没有语法错误。可以将PL/SQL块的运行结果输出,或以别的形式验证块是否有逻辑错误。如果显示编译有错,应该检查PL/SQL块的语句和语法,然后重新编译,直到编译成功为止。

6.2 PL/SQL 程序结构

6.2.1 块结构

PL/SQL是块结构化的语言。组成一个PL/SQL程序的单元是逻辑块(BLOCK)。PL/SQL程序由一个或多个块组成。这些块可以顺序出现、也可以相互嵌套。

6.2.1.1 块的基本结构

每一个块分成三部分,其基本结构如下:

[DECLARE]

——说明部分(可选的)

BEGIN

——语句执行部分(必需的)

[EXCEPTION]

——出错处理程序(可选的)

END;

/

其中:只有语句执行部分是必需的,其他两部分都是可选的。

说明部分包含在块的可执行部分中要用到的所有变量、常量、数据类型、游标和用户定义的错误等对象的定义。以关键字DECLARE开始,所有对象在使用之前必须定义。假如不需要定义变量等,可省略这部分。

执行部分是PL/SQL块中必需的,定义块要完成的处理工作。以关键字BEGIN开始。可以包含操作数据库数据的SQL语句和操作块中数据的PL/SQL语句。

出错处理部分是一个可选部分,指定在执行部分中发生了错误和非正常条件时执行的动作。定义了对各种错误的处理方法,由可执行语句去处理每一个错误。

注意:各部分的关键字DECLARE、BEGIN、EXCEPTION不必用分号(;)结束,而END和所有其他的PL/SQL语句都要求以分号(;)结束。分号(;)是PL/SQL中语句的分界符。一行的注释可以用两个连接符(——)开头,一段语句的注释用/*和*/包围。

6.2.1.2 嵌套块结构

PL/SQL块中可以包含子块,子块可位于PL/SQL块中的任何部分。子块也可是一条PL/SQL命令。

例6-1 举例说明块的嵌套结构。

[DECLARE]

……/*说明部分*/

BEGIN

……/*主块的语句执行部分*/

BEGIN

……/*子块的语句执行部分*/

[EXCEPTION]

……/*子块的出错处理程序*/

END

[EXCEPTION]

……/*主块的出错处理程序*/

END

同类推荐
  • 无人机:知道这些就够了

    无人机:知道这些就够了

    不久的将来无人机将像智能手机一样司空见惯,而你对无人机的了解有多少?你知道无人机有哪些用途吗?无人机对你和你的家庭又会产生什么样的影响呢?知道这些就够了。
  • 数据库原理及Oracle应用

    数据库原理及Oracle应用

    进入21世纪,随着国家信息化步伐的加快及各行业信息化进程的不断加速,社会对专业(非计算机专业)人才的信息技术能力要求越来越高。为了适应社会对专业人才的要求,全国各高校在重视专业知识培养的同时也非常注重计算机应用能力的训练,即信息技术能力的培养。计算机应用水平已成为衡量高校毕业生综合素质的突出标志之一。
  • 虚拟现实:下一个产业浪潮之巅(第2版)

    虚拟现实:下一个产业浪潮之巅(第2版)

    毫无疑问,虚拟现实时代已经来临,VR不仅将彻底改变人们交互的方式。而且会是互联网的下一个风口,VR会创造新时代,即由人的体验构成的互联网时代。目前,全球范围众多的科技、影视等商业巨头纷纷砸巨资押注VR产业。例如,扎克伯格越来越坚定地认为,VR将会成为下一代计算机平台;任正非在内部讲话中也提到,华为要保持理性地进行VR投入与研究,要在这个充满诱惑的领域里分得一杯羹,谁最后倒下,谁便赢得天下。本书是作者基于VR行业多年的研究以及创立VR公司的经验写成,目的是让读者快速、全面地了解VR产业最新、最重要的信息,如生态链、技术瓶颈、发展前景以及人才结构等,是一部不可多得的VR行业入门读物。
  • 网络知识

    网络知识

    一般地说,将分散的多台计算机、终端和外部设备用通信线路互联起来,彼此间实现互相通信,并且计算机的硬件、软件和数据资源大家都可以共同使用,实现资源共享的整个系统就是计算机网络。
热门推荐
  • 血崩的职业之旅

    血崩的职业之旅

    前任城主之子云空,在两个不靠谱的反叛军怂恿下,开始了不断更换职业,打倒现任城主的生活。现在是摩尔摩多的竞选之年,他要开始在这座黑科技城市开启竞选城主之旅了。
  • 逆向支配

    逆向支配

    一场意外,让蓦然穿越成了星际未来的三年级学生。然而新人类?六种性别?毕业就嫁人?抱歉,他的征途是星辰大海!*****请注意避雷:1、本文无女主。2、剧情为主。主角们比心低于100的,可能用于祭天。3、感情线:水。全文无肉,连汤也没。 ***** 更新时间:一、三、五
  • 邪王盛宠纨绔妃

    邪王盛宠纨绔妃

    她双十年华,还待字闺中,成了大夏朝男人惧怕女人厌恶的难嫁女;他年近三十,还尚未娶妻,成了大夏朝男人嘲笑女人惧怕的克妻男;于是,被烦透了的皇帝陛下朱笔一批,一道赐婚圣旨解决了大夏皇朝最难搞的两桩婚事。于是,名满京都的第一女纨绔碰上了权倾天下的九州第一邪王爷,昊天大陆崩盘了。(本文纯属虚构,请勿模仿。)
  • 次元旅行记

    次元旅行记

    这是那些年,在不同世界的生活。那些年我是怪盗,也是侦探,是精灵,也是人类。不同的世界中,我扮演着不同的角色。自始至终,我不过是想回到我本来的世界。
  • 北大女人气质修炼课

    北大女人气质修炼课

    女人的样貌,看似不可改变,但在如今科技发达的年代,改头换面,也并非完全不可能的事情。唯有内心智慧的沉淀,需要众多时日,以水滴石穿之力,渐渐浸入内心,融入灵魂,方能令气质大放光彩。《北大女人气质修炼课》搜集了众多北大女生及一些普通女子的事例,从心、品、貌等方向入手,讲述强大气质的修炼方式。此外,这些女子虽是出自北大,却也首先是个普通女人,同样有着女人的喜、怒、哀、乐,同样会犯下女人易犯下的错误。在她们的跌宕人生中,气质的轨迹隐约浮现,只待我们自己去发掘。
  • 异界来的超级护卫

    异界来的超级护卫

    因为能力特殊,他进入了一个特殊团队里,里边有先进的铠甲,世界顶级的杀手,古武的高手,修仙的道士。他一个异界来的晶石元素师,无意中在地球修齐了五中晶石元素,成为真正的元素之神。元素是什么,元素就是一切!!!怎么样才能成为可怕的最强者,那就是去征服,征服!征服!!小李飞刀的速度!仙法般的魔法幻化!媲美九阳神功的爆发力!
  • 源自山水

    源自山水

    一本笔记流传。一群老人和年轻人的故事。学院篇和港口。
  • 惊世毒妃:逆天三小姐

    惊世毒妃:逆天三小姐

    穿越异世,且看风云起!不是杀手,亦是杀手;不是毒医,亦是毒医。云浅寞她承认她是狐狸,一只从大山里出来的千年狐狸,可以开九尾的狐狸。就因为练功走火入魔,穿越后就不是大姐大了。萌宠?本小姐就是!丹药?没有,本小姐有糖!美男?不喜欢。妖女?本小姐喜欢!妖孽?特么的滚开!狐狸精?终于有人夸我是狐狸精啦!
  • 新进化

    新进化

    我算是一个喜欢幻想的人,可我从不知道原来每个人身体里都有一个小小世界,更令我吃惊的是,我竟然是这个地球上唯一一个能够和那个小小世界沟通的人。刚刚知道这些消息时,我手足无措,但我很快习惯了与那个小小世界进行沟通。通过与他们的交流,我还成了一个特别的人,一个对世界有用的人。然而,我的麻烦也随之而来。各种各样的异能者想要和我称兄道弟,一个接一个的11组织意图拉我入伙,国防委员长视我为救命稻草,美国11恨我入骨。不仅如此、那个神奇的世界也时不时需要我的帮助。我只能在不胜烦扰的情境下继续生活……p.s.对了,如果告诉大家、我真的能够与细胞沟通,你们相信吗?-----不怀好意分割线-----仙侠作:天雷地火(书号:80209),Erica大作,一部六个月前即开始创作的东东,N十万字存稿,观念,宗教,理念的大冲击。玄幻作:好书要藏起来不告诉你们的,所以只能透露书号(书号:73240),咸鱼大人作品,咸鱼开租书店,有任何需求可以找他。竞技作:运动着的都市(书号:79485),sdf周著,我在重生之足球神话后看的唯一一本竞技小说,非常棒!
  • 炼丹狂徒

    炼丹狂徒

    修道界一代炼丹宗师易天,为就心爱之人,毅然渡劫,却因肉身不固而身陨。在偷天换日丹的帮助下,易天的魂魄得以逃生,并且在一个自杀少年商陆身上复生。带着前世的无与伦比的阅历与经验,再次开始修道。曾经的错误不会再犯,奇妙的技巧独我拥有,且看他拯救挚爱的传奇之旅。