登陆注册
18254100000014

第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

同类推荐
  • 中国网络传播研究2009(第三辑)

    中国网络传播研究2009(第三辑)

    本文以传统社区研究的“场域论”为基础,探讨网络传播中场域性互动对社会舆论的影响。文章首先从传统社区传播的场域性特征出发,探讨网络传播的社区性和场域性。然后分别分析了传统门户、BBS论坛和私人博客等三种主流的网络传播的场域性互动、意见表达和舆论形成的特点。最后结合“张殊凡事件”、“王石捐款”事件以及“黑砖窑”事件,探讨网络传播中的场域性互动对社会舆论从虚拟到现实的影响。
  • 悟道:一位IT高管20年的职场心经

    悟道:一位IT高管20年的职场心经

    本书是一位有20多年职场经验的IT企业高管撰写的一系列有关职场悟道的短文集成,讲述的是在企业里如何修炼自己,如何摆平自己的心态,怎样做到“世事洞明”和“人情练达”,如何“搞定老板”,怎样做到工作和生活平衡等诸多话题,涉及到跳槽、转行、升迁、环境、沟通、老板、下属、老外等等。每一篇都以作者的亲身经历或者身边的故事说明道理,语言简洁流畅,妙趣横生,更有不少经典片段和发人深省的职场警句,读起来就像是一个睿智幽默的老朋友坐在你面前娓娓道来。
  • 信息革命

    信息革命

    随着经济社会的快速发展,电子产品走进了千家万户,与电子产品相伴的信息技术也已渗透到人们生产生活的方方面面。加强信息技术普及,已成为业内人士的共识。鉴于此,在有关部门的大力支持下,经过认真筹划,我们编辑出版了《信息革命》一书。该书以时间为经,在记述信息技术发展历程的同时,深入浅出地介绍了信息技术的相关知识,对人们更好地利用现代信息技术服务经济社会建设和个人生产生活必将产生积极作用。本书由李大东主编。
  • 一本书读懂大数据

    一本书读懂大数据

    本书是深入研究互联网思维的经典之作,从互联网思维的定义到互联网思维应用的具体案例表现。作者深入浅出、条分缕析,全面阐述互联网思维的内核与精神,逐一点评当前关于互联网思维的各种观点。本书从最初级的互联网思维应用到高端的粉丝经济,平台建设,自媒体营销的方法都有详细讲解介绍。让读者了解什么是互联网思维的同时还能学会把互联网思维运用到自己的工作学习已经生活中。
  • 办公软件高级应用

    办公软件高级应用

    日新月异的信息技术使计算机的应用渗透到各行各业,融入到我们的工作、学习和生活中,特别是在办公领域中运用计算机技术,可以实现办公自动化,成倍地提高工作效率。在众多的办公软件中,微软公司的Office系列软件是办公自动化软件中的佼佼者,其强大的功能深受全世界广大用户的青睐。根据当前业界的需求以及办公软件的实际应用范围,本书针对Office 2003系列产品,深入讲解其高级应用知识和操作技能。
热门推荐
  • 红颜泪之你是我的妃

    红颜泪之你是我的妃

    一幅手绘美人图将她带入另一个朝代,三世的情缘,不同的爱恋。他,一个冷酷的君王。她,是他最爱也最恨的女人。新婚之夜的第二天,他就以不洁之名将她下嫁给自己四十多岁的皇叔受尽折磨,皇叔死后又将她囚于冷宫,让她生不如死。她一笑而过,这是我欠他的。离殇,离殇,千古悲凉,离殇,离殇,枯骨茫茫,离殇所到生死茫茫,莫雪薇一只转世千年的狐狸,开始了自己的转生之路……复杂的感情,三生的回忆,命运究竟会如何,敬请期待……
  • 老公老婆不登对

    老公老婆不登对

    女频一组C班签约作品当拜金女遇到穷军人;当时尚女遇见土老冒;当opengirl遇见保守男;当城市娇娇女遇见乡村憨憨男:传说中的乌龟与绿豆终于在北京这个剽悍的大都市对上眼了。请看当代最牛小军嫂张lily与最囧特种兵何小白为您倾情上演《老公老婆不登对》!
  • 我的体育老师

    我的体育老师

    燕京军区太子居然逃婚了!!他逃婚了!!逃到异地他乡的他,身无分文。体育老师?保镖?杀手?……总之能赚到钱我什么都干!
  • 甜园福地

    甜园福地

    阿圆从丰衣足食的现代落入鸟不拉屎的古代农家,不仅贫穷,还有几个嗷嗷待哺的熊孩子弟妹等着养活。幸好遇到了疼爱自己的忠犬丈夫,重生的长嫂励志要担起责任,开始了温馨无比的致富路!
  • LOL金戈铁马

    LOL金戈铁马

    穿越成精灵,正逢乱世,开始金戈铁马,争霸天下。
  • 镇委书记

    镇委书记

    本书采用第一人称的叙述手法,细致入微地描写了一个基层干部——镇委书记的历练作为,基间的酸甜苦辣,诸味杂陈,体现了主人公报效热土的赤子情怀,无疑也是社会底层生存状态的最真实写照……本书作者学理科出身,属圈外高手,笔法怪异,文风老辣,作品当属上乘之作。
  • 王俊凯我的阳光少年

    王俊凯我的阳光少年

    栀子花年年开,有的梦年年做。或许,栀子花带给我们的不仅仅是流年的美,更是经久青春下的一份等待在所有栀子花开的浪漫芬芳里,所有的梦都在飞,或许,栀子花开时,带动的是你的梦在飞,带动的是我的梦在飞,带动的是所有人的梦在飞。青春年少,一去不再,我们已经走出了和青春握手的年月,我们已经走进了属于我们自己抒写生命历程的那页篇章。或许,只有栀子花能带给我们那份清透和纯真,让所有的梦想在它的洁白无暇里漫天飞舞!
  • 耀星霸武

    耀星霸武

    卓寒虽出身卑微,但却有着凌云之志。无数玄功、异宝、奇技,都只为壮大他的武道。且看他如何十步一杀,闯那三千世界!
  • 一梦还魂

    一梦还魂

    众生轮回,不出六道。一次诅咒,化为残魂,不生不死,不伤不灭。靠着世间即将病逝的女子身体为介,苟延残喘在人间。看尽沧海桑田,仍忘不了恩恩怨怨。
  • 一本书学会礼仪

    一本书学会礼仪

    在现代社会,虽然一个不懂礼仪的人不至于因此而失去性命,但是,不懂礼仪却能够使一个人失去事业发展的机会、失去工作、失去人缘……