什么是PL/SQL
PL/SOL(Procedural Language/SQL,过程语言/SQL)是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展语言。使用PL/SQL可以编写具有很多高级功能的程序,虽然通过多个 SQl语句也能实现同样的功能,但是相比而言,PL/SQL具有更为明显的一些优点。
(1)PL/SOL具有编程语言的特点,它能把一组SQL语句放到一个模块中,使其更具模块化程序的特点。
(2)PL/SQL可以采用过程性语言控制程序的结构,也就是说,我们可以在PL/SQL中增加逻辑结构,如判断、循环等程序结构。
(3)同其他的编程语言一样,PL/SQL可以对程序中的错误进行自动处理.使程序能够在遇到错误时不会中断,即它的异常处理机制。
(4)PL/SQL程序块具有更好的可移植性,可以移植到另一个Oracle数据中。
(5)PL/SQL程序减少了网络的交互,有助于提高程序性能。
PL/SQL 体系结构
PL/SQL引擎用来编译和执行PL/SQL块或子程序,该引擎驻留在 Oracle 服务器中。PL/SQL引擎仅执行过程语句,而将 SQL语句发送给 Oracle 服务器上的SOL语句执行器,由 SQL语句执行器执行这些SQL语句。
PL/SQL块简介
PL/SQL是一种块结构的语言,它将一组语句放在一个块中。PL/SQL块将逻辑上相关的声明和语句组合在一起。匿名块是一个未在数据库中命名的PL/SQL块,在运行时被传递到PL/SQL引擎以便执行。在PL/SQL 块中可以使用 SELECT、INSERT、UPDATE、DELETE 等DML语句、事务控制语句及SQL函数等。PL/SQL块中不允许直接使用CREATE,DROP或ALTER等DOL语句,但可以通过动态SQL来执行它们。
运算符和表达式
- 关系运算符
运算符 | 意义 |
---|---|
= | 等于 |
<>,!=,~=,^= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
- 一般运算符
运算符 | 意义 |
---|---|
+ | 加号 |
- | 减号 |
* | 乘号 |
/ | 除号 |
:= | 赋值号 |
=> | 关系号 |
… | 范围运算符 |
丨丨 | 字符连接符 |
- 逻辑运算符
运算符 | 意义 |
---|---|
IS NULL | 是空值 |
BETWEEN AND | 介于俩者之间 |
IN | 在一列值中间 |
AND | 逻辑与 |
OR | 逻辑或 |
NOT | 取反,如IS NOT NULL, NOT IN |
- PL/SQL 程序设计中的标识符定义与SQL的标识符的要求相同,要求限制 如下:
标识符名不能超过30个字符
第一个字符必须为字母
不区分大小写
不能用"-"(减号)
不能是SQL保留字
- 变量命名方法
PL/SQL数据类型
LOB数据类型
Oracle 提供了 LOB(Large Object) 类型,用于存储大的数据对象的类型。Oracle 目前主要支持BFILE、BLOB、CLOB 及NCLOB 类型。
-
BFILE (Movie)
存放大的二进制数据对象,这些数据文件不放在数据库里,而是放在操作系统的某个目录里,数据库的表里只存放文件的目录。 -
BLOB(Photo)
存储大的二进制数据类型。变量存储大的二进制对象的位置。大二进制对象的大小<=4GB。
CLOB(Book)
存储大的字符数据类型。每个变量存储大字符对象的位置,该位置指到大字符数据块。大字符对象的大小<=4GB。
NCLOB
存储大的NCHAR字符数据类型。每个变量存储大字符对象的位置,该位置指到大字符数据块。大字符对象的大小<=4GB。
数据类型
%TYPE特性的优点在于:
1.所引用的数据库列的数据类型可以不必知道;
2.所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
%ROWTYPE特性的优点在于:
所引用的数据库中列的个数和数据类型可以不必知道;
所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。