Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103783865
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-22 19:40:32

作者: 罗骏 出处:清华大学出版社  
 
 
阅读提示:《SQL实用简明教程》(第2版)第一章主要介绍的是数据库和SQL语言。本文讲的是PL/SQL。

1.2.4  PL/SQL

PL/SQL是一种高性能的基于事务处理的语言,近几年中更多的开发人员和DBA开始使用PL/SQL。PL/SQL通过添加在其他过程语言中具有的控制结构来扩展SQL。PL/SQL将SQL的灵活性与第三代语言的功能和可配置性结合在一起。

1. PL/SQL的优点

PL/SQL 不是一个独立的产品,而是一个整合到Oracle服务器和Oracle工具中的技术。PL/SQL是完全可移植的、高性能的事务处理语言,其优点如下。

● PL/SQL是一种高性能的基于事务处理的语言,能运行在任何Oracle环境中,支持所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。
● PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有Oracle对象类型。
● PL/SQL块可以被命名和存储在Oracle服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。
● 可以通过PL/SQL存储过程对客户机和服务器之间的应用程序逻辑进行分隔,这样,就可以阻止客户机应用程序操纵敏感的Oracle数据。可以限制对Oracle数据的访问,其方法是仅允许用户通过存储过程操纵它。
● PL/SQL代码可以使用任何ASCII文本编辑器编写,所以对任何Oracle能够运行的操作系统都是非常便利的。
● 在不使用PL/SQL的情况下,Oracle必须一次处理一条SQL语句。在网络环境下这就意味着每一个独立的调用都必须被Oracle服务器处理,将会占用大量的服务器时间,同时导致网络拥挤。而PL/SQL是将整个语句块发给服务器,这就降低了网络拥挤。

2. PL/SQL块结构

PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL 程序包含了一个或多个逻辑块。 PL/SQL块可以分为3部分,即声明部分、可执行部分和异常处理部分。其语法如下:

DECLARE
declarations
BEGIN
executable statements
EXCEPTION
handles
END;

上述语法中各参数的含义如下。

● declarations是声明部分,包含了变量和常量的数据类型和初始值。这个部分由关键字DECLARE开始,如果不需要声明变量或常量,可以忽略这一部分。
● executable statements是可执行语句,执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。
● handles是异常处理部分,是可选的,在执行过程中出现的异常在处理部分中处理。

3. 变量和常量

PL/SQL是一种强壮的类型语言,这就是说在引用变量前必须首先声明,可以在任何PL/SQL块、子程序或程序包的声明部分中声明变量。声明变量的语法如下:

Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]  


上面语法中各参数的含义如下。

● Variable_name是变量名。
● Databyte是为变量指定数据类型。
● Expression是为变量指定默认值。

注意:
使用NOT NULL约束时,必须为变量赋予一个初始值。

也可以在声明部分中声明常量,它的声明方式与变量相似,但必须包括关键字CONSTANT,该关键字必须位于数据类型之前。

4. 数据类型

PL/SQL提供了4种内置数据类型,即标量数据类型、组合数据类型、引用数据类型和LOB类型。

标量数据类型又进一步分为以下4类。

● Number类型,类似于SQL的数据类型,主要用于存储数字数据。
● Character类型,用于存储字符串或字符数据。还包括各种子类型,即 CHAR(用于存储固定长度的字符数据),RAW(用于存储二进制数据或字节串),LONG和LONG RAW,ROWID和UROWID,VARCHAR2(此类型变量可容纳可变长度字符串,VARCHAR2数据类型有两种子类型,即STRING和VARCHAR)。
● Date类型,用于存储固定长度的日期和时间数据。它支持的日期范围为:从公元前4712年1月1日到公元4712年12月31日。
● BOOLEAN类型,用于存储逻辑值TRUE、FALSE或NULL。它们不带任何参数。不能将boolean数据插入到数据库列中。

PL/SQL提供的组合类型是record(记录)、table(表)、varray(可变数组)和nested table(嵌套表)。组合类型的变量包含一个或多个标量变量。

引用类型是REF CURSOR(游标变量)和REF操作符。引用类型可以在程序运行时指定不同的存储位置。

LOB类型用于存储大型对象。大型对象可以是二进制值或字符值,其大小为4GB。有4种类型的LOB,如下所示。

● BLOB(二进制LOB),存储长度最大为4GB的未结构化二进制数据。BLOB可包含视频和图片信息。
● CLOB(字符LOB),存储长度最大为4GB的单字节字符,可用于存储文档。
● NCLOB,存储长度最大为4GB的大型块NCHAR数据。
● BFILE(二进制文件),它将只读二进制数据作为外部文件存储在数据库之外。

阅读(718) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~