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块或子程序,该引擎驻留在 Oracle 服务器中。PL/SQL引擎仅执行过程语句,而将 SQL语句发送给 Oracle 服务器上的SOL语句执行器,由 SQL语句执行器执行这些SQL语句。
PL/SQL是一种块结构的语言,它将一组语句放在一个块中。PL/SQL块将逻辑上相关的声明和语句组合在一起。匿名块是一个未在数据库中命名的PL/SQL块,在运行时被传递到PL/SQL引擎以便执行。在PL/SQL 块中可以使用 SELECT、INSERT、UPDATE、DELETE 等DML语句、事务控制语句及SQL函数等。PL/SQL块中不允许直接使用CREATE,DROP或ALTER等DOL语句,但可以通过动态SQL来执行它们。
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程序。