什么是PL/SQL

---认识PL/SQL

    *** PL/SQL的使用几乎贯穿于整个Oracle 的学习过程,也是作为一个初级开发人员必须掌握的重要知识点。

    ***结构化查询语言(SQL)是用来访问和操作关系型数据库的一种标准通用语言,它属于第四代语言(4GL),

        简单易学,使用它可以很方便地调用相应的语句来取得结果。该语言的特点就是非过程化。也就是说,使用

        的时候不用指明执行的具体方法和途径,即不用关注任何的实现细节。但这种语言也有一个问题,就是在某

       些情况下满足不了复杂业务流程的需求,这就是第四代语言的不足之处。

       Oracle 中的PL/SQL语言正是为了解决这一问题,PL/SQL属于第三代的语言(3GL),也就是过程化的语言,

       同Java  、C# 一样可以关注细节,用它可以实现复杂的业务逻辑,是数据库开发人员的利器。

  *** PL/SQL是Oracle 公司在标准SQL语言基础上进行扩展而形成的一种可以在数据库上进行设计变成的语言,

      通过Oracle 的PL/SQL 引擎执行。PL/SQL完全可以像Java语言一样实现逻辑判断条件循环以及异常处理

      等,这是标准的SQL很难办到的事情。由于它的基础是标准的SQL语句,这就使得数据库开发人员能快速地

      掌握并运用,相信这也是Oracle 开发人员喜欢它的另一个重要原因。总的来说,PL/SQL有以下几个特点

                 》》支持事务控制和SQL数据操作命令。

                 》》它支持SQL的所有数据类型,并且在此基础上扩展了新的数据类型,也支持SQL的函数以及

                        运算符

                 》》 PL/SQL可以存储在Oracle 服务器中

                 》》服务器上的PL/SQL程序可以使用权限进行控制

                 》》Oracle 有自己的DBMS包,可以处理数据的控制和定义命令

---PL/SQL的优势

      *** 由于PL/SQL语言是从SQL语言扩展而来,所以PL/SQL除了支持SQL数据类型和函数外,同时也支持

           Oracle对象类型。除此之外,同传统的SQL语言相比PL/SQL有以下几个优点

           (1)、可以提高程序的运行性能

                       标准的SQL被执行时,只能一条一条地向Oracle 服务器发送。假如完成一个业务逻辑需要几条

                甚至几十条SQL语句,那么在这个过程中,客户端会几十次地连接数据库服务器,而连接数据库本身

                是一个很耗费资源的过程,当这个业务被完成时,会浪费大量的资源在网络连接上。

                      如果此时换用PL/SQL语句,结果则不一样了。PL/SQL的语句块可以包含多条SQL语句,而语句

                块可以嵌套在程序中,甚至可以存储到Oracle 服务器上。这样用户只需要连接一次数据库就可以把

                需要的参数传递过去,其他的部分将在Oracle  服务器内部执行完成,然后返回最终的结果。这样就

                 大大地节省了网络资源的开销。

                                      

           (2)、可以使程序模块化

                        在程序块中可以实现一个或几个功能。例如,当想把一个动物的模型存到数据库里时,

               可能涉及几张表,如果使用标准的SQL完成该功能需要多条语句,而如果使用块,则可以把

               对多张表的操作都放到一个块内,而对外只提供一个调用方式和需要传入的参数。这对于

               编程开发人员是一个福音,他们不需要再写过多的SQL语句,只需要给出参数并调用一次

                PL/SQL 的程序块就好。这种操作的优势在介绍存储过程后显得尤其明显。

                          使用块也可以把数据库数据同客户程序隔离开来,使得数据库表结构发生变化时,对

                调用者的影响减小到最低程度。

           (3)、可以采用逻辑控制语句来控制程序结构

                         如果一个PL/SQL程序块中只能顺序地执行基本的SQL语句,那么它的意义实在有限。

                 而实际当中PL/SQL可以利用条件或循环语句来控制程序的流程,这么做就大大地增加了

                 PL/SQL 的实用性,我们可以利用逻辑控制语句完成复杂的普通的SQL语句完成不了的业务。

 

                  例如,实现如下的功能:产品很多种类,而在产品表中,产品的类型需要使用产品类型编码

                  替代,而不是名称,这样当输入记录的时候就需要把产品名称转换成产品编码,在PL/SQL

                  块中就可以利用 CASE 语句完成判断分类,并把产品名称转换成产品编码。而这些在标准的

                  SQL中很难实现,即便实现了也不是动态的数据。

 

           (4)、利用处理运行时的错误信息

                   标准的SQL在遇到错误时会提示异常。例如增加数据,一旦有异常就会终止,但是调用者却

                 很难快速地发现错误点在哪儿,即使发现出问题的地方也只能是告诉开发人员该语句程序本身

                 有问题,而不是逻辑上有问题。

 

                   例如:在产品表里增加数据时,数量只能是要求数值型,并没有更细的要求。假如增加的数据

                   中该字段部分是一个负数,正常来说是可以进入数据库的,但这在逻辑上是不允许的,因为

                   没有数量为负的产品。而利用PL/SQL就可以完全避免类似的问题,我们可以利用流程拒绝这

                   部分记录进入数据库。

 

                         利用PL/SQL 还可以成功处理一些程序上的异常,不至于因终止SQL操作,而造成调用SQL

                   的展示页面出现生硬的错误提示。

 

           (5)、良好的可移植性

                     PL/SQL可以成功地运行到不同的服务器中。例如,从windows 的数据库服务器下移植到Linux

             的数据库服务器下。也可把PL/SQL从一个Oracle 版本移植到其他版本的Oracle 中。

 

---PL/SQL的结构

             PL/SQL程序的基本单位是块(block),而PL/SQL块很明确地分三部分,其中包括声明部分执行

          部分异常处理部分。其中声明部分以 DECLARE 作为开始标志执行部分用 BEGIN 作为开始部分

          而异常处理部分以 EXCEPTION 为开始标志。其中的执行部分是必需的,而其余的两个部分则可选下面

          的一段文字描述了PL/SQL块的三部分:

            ------------------------------------------------------------------------------------------------------------------------------------

            [ DECLARE ]               -- 声明开始关键字

                                               /*  这里是声明部分,包括PL/SQL中的变量、常量以及类型等  */

            BEGIN                        -- 执行部分开始的标志

                                                /*  这里是执行部分,是整个PL/SQL块的主体部分,该部分在

                                                   该部分在PL/SQL块中必须存在,可以是SQL语句或者程序流程

                                                    控制语句等  */

            [ EXCEPTION ]           -- 异常开始部分的关键字

                                                /*   这里是异常处理部分,当出现异常时程序流程可以进入此处  */

            END ;                          -- 执行结束标志

            --------------------------------------------------------------------------------------------------------------------------------------

 

              需要记住:无论PL/SQL程序段的代码量有多少,它的基本结构只是这三部分组成。下面将以3个示例

           演示PL/SQL 语句块的 3 种情况。

           【示例1】只有执行体部分的结构

               该示例只有执行体部分,也就是只有“ BEGIN...END; ” 部分,该语句块中将输出一句话,脚本如下:

               

                《执行效果》

                 打开SQL*Plus 执行,执行结果如上图。

                  从上图中可以看到“ SET SERVEROUTPUT ON”这么一行脚本,利用该脚本可以打开SQL*Plus

                的输出功能,否则会看不到输出的语句。

           【示例2】包含声明和执行体两部分的结构

                 该示例除了执行体外还有声明部分,具体操作是声明一个变量,然后为变量赋值,最后输出该

             变量的值。脚本如下:

                 

                   《执行效果》

                   打开SQL*Plus 并执行,执行结果如上。

                   通常在PL/SQL 编程中,变量都是存储动态得到的数据,这种情况在下一个示例中将演示。

                 【示例3】包含声明部分、执行体和异常部分的结构

                  

                  SELECT...INTO...语句是PL/SQL特有的赋值语句,该语句表示的意思是 SELECT 后面列出要

           查询的字段列表,INTO后面是变量名称,它表示把查询出来的值存储到变量中。这里有两个问题

           需要注意,就是 SELECT 列名顺序和INTO后面的变量名顺序要一一对应,还有就是该类型语句每

           次只能返回一条记录,如果返回记录超过一条或没有返回记录都会引发异常

---PL/SQL的基本规则

             PL/SQL中有一些基本的规范读者应该了解,在了解这些基础之后就可以学习更加严格的编程规范,

         这样才能写出高质量的代码,其他开发人员阅读起来也会有一个积极开朗的心态。下面列出初学者需

         要注意的规则:

              (1)、PL/SQL中允许出现的字符集

                          》》字母,包括大写和小写

                          》》数字,即 0~9

                          》》 空格、回车符以及制表符

                          》》符号包括 + 、- 、 *  、  /  、 <  、  >  、 =   、 !  、  ~  、  ^  、  ;  、 :  、 .  、 '  、 @ 、

                                                %  、 ,  、  "  、  #  、  $  、  &   、  _   、|  、 (  、 )  、 [  、 ]   、 {  、 }  、?

              (2)、下面列出一些PL/SQL必须遵守的要求:

                          》》标识符不区分大小写。例如,TEST 同 Test 、test 是一样的。所有的名称在存储时都被

                                 修改成大写,这一点读者需要注意。

                          》》标识符中允许字母、数字、下划线,并且以字母开头

                          》》标识符最多30个字符

                          》》不能使用保留字。如与保留字同名必须使用双引号括起来

                          》》语句使用分号结束。即使多条语句在同一行,只要它们都正常结束,那么就没有问题。

                                  而且在语句块的结束标志 END 后面同样需要使用分号

                          》》语句的关键词、标识符、字段的名称以及表的名称等都需要空格的分隔

                          》》字符类型和日期类型需要使用单引号括起

              (3)、以下是为了增强代码的阅读性的相关建议,这些不是必须要遵守的,但通常情况下有些单位

                          也可能把这些规范作为硬性要求。

                          》》每行只写一条语句

                          》》全部的保留字、Oracle的内置函数、程序包以及用户定义的数据类型都用大写

                          》》所有的过程名称大写

                          》》所有的变量以及自建的过程或游标、触发器名称都要使用有意义的名称命名

                          》》命名应以“_”的连接方式,而不是用大小写混合的方式(如果只为了方便自己的阅读,可以

                                使用大小写混合)

                          》》变量前最好加上前缀,以表示该变量的数据类型、作用范围等

                          》》每个变量都应加上注释

                          》》在重要的程序段处都应加上注释

                          》》建议3个半角空格替代TAB键进行缩进

                          》》逗号后面以及操作符的前后都应加上空格

                          以上只是比较基本的规则,可以提高代码的可读性,在企业的每个项目小组中会根据实际的情况

                         做出更细的要求,甚至形成规范文档。在日常开发中应注意这些规范,形成良好的编程习惯。

---PL/SQL中的注释

             ***提高代码可读性的最有效的办法就是添加注释。工作中修改其他开发人员的程序是很常见的事,程序

                 如果没有注释,就会很难理解,这样导致的结果轻则会影响修改进度,重则会影响程序的开发进度,

               可见注释对程序是多么重要。通常情况下,程序的注释要求不能低于代码量的 20% ,注释也是程序的

                 一部分,所以开发人员要养成添加注释的好习惯。

             ***有注释的程序能使阅读者快速地了解代码实现的业务逻辑,并能理解程序的思路。这对自己和其他的

                 开发人员都是很有利的,甚至对公司来讲都是利远大于弊。Oracle 为使用者提供了两种注释方式,

                 它们分别是:

                                 》》单行注释:使用“_ _” 两个短划线,可以注释掉后面的语句

                                 》》多行注释:使用“ /*...*/ ” ,可以注释掉这两部分包含的部分

相关推荐
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势。 (5)PL/SQL Developer主要特性:   PL/SQL编辑器,功能强大——该编辑器具有语法加强、SQLPL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户需求。当您需要某个信息时,它将自动出现,至多单击即可将信息调出。   集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时停止运行、断点、观察和设置变量、观察全部堆栈等。基本能够调试任何程序单元(包括触发器和Oracle8 对象类型),无需作出任何修改。   PL/SQL完善器——该完善器允许您通过用户定义的规则对SQLPL/SQL代码进行规范化处理。在编译、保存、打开一个文件时,代码将自动被规范化。该特性提高了您编码的生产力,改善了PL/SQL代码的可读性,促进了大规模工作团队的协作。   SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL编辑器提供了同PL/SQL编辑器相同的强大特性。   命令窗口——使用PL/SQL Developer 的命令窗口能够开发并运行SQL脚本。该窗口具有同SQL*Plus相同的感观,另外还增加了一个内置的带语法加强特性的脚本编辑器。这样,您就可以开发自己的脚本,无需编辑脚本/保存脚本/转换为SQL*Plus/运行脚本过程,也不用离开PL/SQL Developer集成开发环境。   报告——PL/SQL Developer提供内置的报告功能,您可以根据程序数据或Oracle字典运行报告。PL/SQL Developer本身提供了大量标准报告,而且您还可以方便的创建自定义报告。自定义报告将被保存在报告文件中,进而包含在报告菜单内。这样,运行您自己经常使用的自定义报告就非常方便。   您可以使用Query Reporter免费软件工具来运行您的报告,不需要PL/SQL Developer,直接从命令行运行即可。   工程——PL/SQL Developer内置的工程概念可以用来组织您的工作。一个工程包括源文件集合、数据库对象、notes和选项。PL/SQL Developer允许您在某些特定的条目集合范围之内进行工作,而不是在完全的数据库或架构之内。这样,如果需要编译所有工程条目或者将工程从某个位置或数据库移动到其他位置时,所需工程条目的查找就变得比较简单,   To-Do条目——您可以在任何SQLPL/SQL源文件中使用To-Do条目快速记录该文件中那些需要进行的事项。以后能够从To-Do列表中访问这些信息,访问操作可以在对象层或工程层进行。   对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、浏览数据、在对象源中进行文本查找、拖放对象名到编辑器等。   此外,该对象浏览器还可以显示对象之间的依存关系,您可以递归的扩展这些依存对象(如包参考检查、浏览参考表格、图表类型等)。   性能优化——使用PL/SQL Profiler,可以浏览每一执行的PL/SQL代码行的时序信息(Oracle8i或更高),从而优化您SQLPL/SQL的代码性能。   更进一步,您还可以自动获取所执行的SQL语句和PL/SQL程序统计信息。该统计信息包括CPU使用情况、块I/O、记录I/O、表格扫描、分类等。   HTML指南——Oracle目前支持HTML格式的在线指南。您可以将其集成到PL/SQL Developer工作环境中,以便在编辑、编译出错或运行时出错时提供内容敏感帮助。   非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、创建和修改行为。PL/SQL Developer提供了一个简单易用的窗体,只要将信息输入其中,PL/SQL Developer就将生成相应的
谢谢大家的支持,我会陆续上传相关电子书 由于体积较大,本书分两卷压缩,请都下载完再解压! Oracle 11g SQLPL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQLPL SQL从入门到精通 pdf格式电子书 下载(二) http://download.csdn.net/source/3268312 内容简介   本书是专门为oracle应用开发人员提供的sqlpl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录类型、集合类型、对象类型、大对象类型)。   除了为读者提供编写sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sqlpl/sql初学者,也适合于有经验的oracle应用开发人员。 前言 第一部分 sqlpl/sql相关工具  第1章 在windows 平台上安装oracle database 11g  第2章 配置网络服务名  第3章 使用sql database  第4章 使用sql*plus 第二部分 sql  第5章 sqlpl/sql综述  第6章 简单查询  第7章 sql单行函数  第8章 操纵数据  第9章 复杂查询  第10章 管理常用对象 第三部分 pl/sql  第11章 pl/sql基础  第12章 访问oracle  第13章 编写控制结构  第14章 使用复合数据类型  第15章 使用游标  第16章 异常处理 . 第17章 本地动态sql  第18章 pl/sql过程  第19章 pl/sql函数  第20章 pl/sql包  第21章 触发器  第22章 使用对象类型 第四部分 pl/sql系统包  第23章 使用大对象  第24章 读写os文件  第25章 开发多媒体应用  第26章 开发web应用  第27章 dbms_sq动态sql  第28章 管理统计  第29章 使用数据库资源管理器  第30章 数据加密和解密  第31章 使用调度程序  第32章 使用flashback  第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 习题答案
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页