1.PL/SQL语言是一种什么样的程序设计语言?
1.1. PL/SQL is abbreviation for Procedural Language,顾名思义,它是一种扩展了的结构化程序设计语言。【不能算是第四代程序设计语言,也不能算是面向对象的程序设计语言。】
1.2. 是一种对SQL进行结构化扩展的程序设计语言—换言之,扩展了对Oracle数据库软件开发的特殊支持:
1.2.1. SQL语句可以直接嵌入到PL/SQL中
1.2.2. 可以直接使用DML操作Oracle数据库中的数据
1.2.3. 以软件包的形式集成了许多常见的数据库程序设计功能—从而大大的减少了代码量
1.3. 提供了软件工程的全部特性
1.3.1. 模块化
1.3.2. 数据封装
1.3.3. 信息隐藏
1.3.4. 异常处理
1.3.5. 支持面向对象的程序设计【而非“是”】
2.PL/SQL提供了现代软件工程的哪些主要特性?
2.1. 模块化
2.2. 数据封装
2.3. 信息隐藏
2.4. 异常处理
2.5. 支持面向对象的程序设计【而非“是”】
3.在基于Oracle的软件开发项目中,为什么首选的编程语言是PL/SQL?
3.1. Oracle的很多工具都是以pl/sql软件包的形式分发的
3.2. Oracle为了方便基于Oracle数据库的编程,需要将许多常见的数据库程序设计功能集成在PL/SQL语言中(或以软件包的形式提供了相关的功能)
4.除了包括过程语句之外,PL/SQL程序还可以包括什么语句?
4.1. SQL语句
5.PL/SQL引擎是怎样编译和执行PL/SQL程序的?
5.1. 对用户提交的程序快进行语法分析
5.2. 将PL/SQL与SQL进行剥离
5.3. 将PL/SQL交给过程语句执行器执行
5.3.1. 许多Oracle工具,如Oracle Forms和Oracle Reports都有自带的PL/SQL引擎---这些工具会将PL/SQL程序快传送给工具中本地的PL/SQL引擎。因此,所有的PL/SQL都会在本地运行
5.3.2. 从而减轻了服务器的负担
5.4. 将SQL语句传递给SQL语句执行器执行
5.4.1. SQL语句执行器存在于数据库服务器,因此所有的SQL语句都会在数据库服务器上执行
6.为什么使用PL/SQL可以改进系统的整体性能并减少网络的流量?
6.1. 可以使用PL/SQL将逻辑相关的SQL放在一个PL/SQL程序块中,之后一次性发送给服务器执行。
7.了解在PL/SQL中模块化是怎么实现的?
7.1. 在PL/SQL程序设计语言中,模块化事通过使用过程、函数和软件包来实现的
8.PL/SQL程序设计语言具有哪些主要优势?
8.1. 它将过程化的结构和SQL集成在一起,从而既有了SQL的简洁,又可以使用PL/SQL的语法进行复杂的逻辑控制。
8.2. 过程化的结构包括:
8.2.1. 循环
8.2.2. 分支
8.2.3. 异常处理
8.2.4. 过程
8.2.5. 函数
8.2.6. 软件包
8.3. 8个主要优势:
8.3.1. 开发成本最低
8.3.1.1. 因为PL/SQL引擎集成在Oracle数据库服务器中
8.3.2. 应用系统的开发更简单、快捷
8.3.2.1. 因为许多与数据库相关的程序功能已经集成在PL/SQL语言中
8.3.3. 方便Oracle数据库的管理和维护
8.3.3.1. 因为许多Oracle的管理和维护工具都是以PL/SQL软件包的形式提供的
8.3.4. 方便分布式应用系统的开发
8.3.4.1. PL/SQL引擎集成在一些开发和部署工具中
8.3.5. 在使用过程话的语言控制结构进行编程的而同时又可以使用SQL语句
8.3.6. 可移植性非常好
8.3.6.1. 表现在:
8.3.6.1.1. 无论什么硬件平台和操作系统,只要上面有Oracle服务器就可以运行PL/SQL程序,而且也不需要重新配置环境
8.3.6.1.2. 也可以将PL/SQL代码在不同系统(如Windows、Linux)的Oracle服务器之间移动
8.3.6.2. 故而可以使用PL/SQL编写可移植的软件包并且创建可以在不同环境中重用的程序库---【软件移植】
8.3.6.3. 原因在于:所有Oracle服务器都默认安装了PL/SQL引擎,即所有PL/SQL语言都是集成在Oracle服务器中的
8.3.7. 标识符必须先声明后引用
8.3.7.1. 标识符不仅仅是变量,还包括游标、常量、异常等。
8.3.7.2. 好处是:
8.3.7.2.1. 可以避免出现因变量名写错而在大型程序中难以追踪的错误
8.3.8. 具有完善而高效的异常处理功能
8.3.8.1. 比Java的异常处理更完善、更强大
8.3.8.2. 体现在:
8.3.8.2.1. Oracle预定义了许多在数据库编程中常见的异常
8.3.8.2.2. Oracle系统可以自动抛出这些预定义异常,并将异常处理直接转移到异常处理程序段进行统一处理
8.3.8.3. 带来的优势:
8.3.8.3.1. 明显的减少代码量
8.3.8.3.2. 使程序的逻辑流程更为简单清晰
8.4. PL/SQL是使用模块化的程序开发方法进行程序设计和开发的
8.4.1. 模块化程序开发的特点和优势为:
8.4.1.1. 将逻辑相关的语句分别放在各自的程序块中
8.4.1.2. 将一个复杂的应用分解成一些较小的、易管理的、明确定义的和逻辑上相关的模块;这样多个程序员可以同时开发不同模块。也可以使用一些已经调试好的模块,最后再集成为一个完整的应用程序。
8.4.1.3. 可以在较大的程序块中嵌套一些程序块以构成更为强大的程序
8.4.1.4. 将可以重用的PL/SQL程序代码放在程序库中共享或存储在数据库服务器中以方便任何需要的应用程序(或用户)直接调用
9.了解PL/SQL程序快结构,以及组成这种结构的三种程序段?
9.1. 声明段:DECLARE
9.1.1. 定义变量、游标和用户自定义的异常
9.2. 执行段:BEGIN……END
9.2.1. 包含了一个或多个(至少一个)SQL或PL/SQL语句
9.2.2. 一个PL/SQL执行段可以包括任意数量的PL/SQL程序块,即程序块可以嵌套
9.3. 异常处理段:EXCEPTION【可以嵌套在执行段】
9.3.1. 在程序段中 ,当错误和异常抛出时,就要只想异常处理程序的代码
10.了解PL/SQL程序的构成方式?
10.1. 每一个PL/SQL程序都是由一个或多个程序块组成的,而这些程序块可以是完全分离的,也可以嵌套在另一个程序块中
10.1.1. 这些程序块有以下三种类型:
10.1.1.1. 匿名块(Anonymous blocks)
10.1.1.1.1. 即没有命名的程序块
10.1.1.1.2. 是在应用程序内部有需要的地方声明的
10.1.1.1.3. 在这个应用程序每次执行时,这些匿名块都会被编译且执行,应用程序有可能就是SQL*Plus,匿名块是不能存储在数据库中的,它们在运行时直接传送给PL/SQL引擎执行
10.1.1.1.4. 应用的例子
10.1.1.1.4.1. Oracle的开发部署工具(如Oracle Forms和Oracle Reports)中的触发器就是用这些匿名块定义的。
10.1.1.1.5. 局限性:
10.1.1.1.5.1. 如果想再次执行相同的匿名块就得重写这个匿名块,因为它是没有名字的
10.1.1.1.5.2. 匿名块在执行之后就不存在了,不能激活或者调用它
10.1.1.1.6. 优点:
10.1.1.1.6.1. 简单
10.1.1.1.6.2. 可以用于数据库的管理和维护
10.1.1.2. 子程序(Subprograms)--是对匿名块的补充,就是被命名的PL/SQL程序块,它们可以存储在数据库中---因此,用户可以在任何他们需要的地方调用这些子程序。
10.1.1.2.1. 过程(Procedures)--用于处理操作
10.1.1.2.2. 函数(Functions)---用于计算并且返回函数的计算结果
11.熟悉在实际工作中,创建、编辑和执行PL/SQL的具体步骤
11.1. 使用正文编辑器(如Windows系统上的记事本)来创建PL/SQL程序
11.2. 将PL/SQL程序复制并粘贴到SQL*Plus中执行
11.3. 如果有问题重新在正文编辑器中修改程序,修改之后重复步骤(2)
11.4. 如果成功执行,以操作系统文件的方式保存正文的PL/SQL程序
12.在PL/SQL程序中怎样输出信息? --PL/SQL中没有I/O语句,通过DBMS_OUTPUT软件包来完成I/O操作
12.1. Show serveroutput
12.2. Set serveroutput on
12.3. DBMS_OUTPUT.PUT_LINE();
13.在使用中文字符串时应该注意什么?
13.1. 注意字符串乱码的问题
13.1.1. Select userenv(‘language’) from dual;
13.1.2. Select * from v$NLS_Parameters;
13.1.3. 设置环境变量NLS_LANG为13.1.1.查出来的结果