教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 数据库类教程 · Oracle教程 · Oracle基础教程

Oracle PL/SQL语言初步掌握

学院最新推荐文章
教程推荐
『Oracle PL/SQL语言初步掌握』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-9-8 
一、背景介绍

结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。然而,有些复杂的业务流程要求相应的程序来描述,这种情况下4GL就有些无能为力了。PL/SQL的出现正是为了解决这一问题,PL/SQL是一种过程化语言,属于第三代语言,它与C、 C++、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。本文主要介绍PL/SQL的编程基础,以使入门者对PL/SQL语言有一个总体认识和基本把握。

二、编程基础知识

1. 程序结构

PL/SQL程序都是以块(block)为基本单位,整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头)。其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。如下所示为一段完整的PL/SQL块:

/*声明部分,以declare开头*/

declare v_id integer;

v_name varchar(20);

cursor c_emp is select * from employee where emp_id=3; 

/*执行部分,以begin开头*/

begin  open c_emp; //打开游标 

loop

fetch c_emp into v_id,v_name;      //从游标取数据

exit when c_emp%notfound ; 

end loop ;

close c_emp;               //关闭游标

dbms_output.PUT_LINE(v_name); 

/*异常处理部分,以exception开始*/

exception

when no_data_found then

dbms_output.PUT_LINE('没有数据');

end ;


2. 控制结构

PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。

1) 条件结构

与其它语言完全类似,语法结构如下:

if condition then

statement1

else

statement2

end if ;


2) 循环结构

这一结构与其他语言不太一样,在PL/SQL程序中有三种循环结构:

a. loop … end loop;

b. while condition loop … end loop;

c. for variable in low_bound . . upper_bound loop … end loop;


其中的“…”代表循环体。

3) 顺序结构

实际就是goto的运用,不过从程序控制的角度来看,尽量少用goto可以使得程序结构更加的清晰。

3. 变量声明与赋值

PL/SQL主要用于数据库编程,所以其所有的数据类型跟Oracle数据库里的字段类型是一一对应的,大体分为数字型、布尔型、字符型和日期型。这里简单介绍两种常用数据类型:number、varchar2。

number

用来存储整数和浮点数。范围为1e130~10e125,其使用语法为:

number[(precision, scale)]

其中(precision, scale)是可选的,precision表示所有数字的个数,scale表示小数点右边数字的个数。

varchar2

用来存储变长的字符串,其使用语法为:

varchar2[(size)]

其中size为可选,表示该字符串所能存储的最大长度。

在PL/SQL中声明变量与其他语言不太一样,它采用从右往左的方式声明,比如声明一个number类型的变量v_id,那其形式应为:

v_id number;

如果给上面的v_id变量赋值,不能用“=”,应该用“:=”,即形式为:

v_id :=5;

4. SQL基本命令

PL/SQL使用的数据库操作语言还是基于SQL的,所以熟悉SQL是进行PL/SQL编程的基础。SQL语言的分类情况大致如下:

1) 数据定义语言(DDL):Create,Drop,Grant,Revoke,…

2) 数据操纵语言(DML):Update,Insert,Delete,…

3) 数据控制语言(DCL):Commit,Rollback,Savapoint,…

4) 其他:Alter System,Connect,Allocate, …

具体的语法结构可以参阅其他关于SQL语言的资料,这里不再赘述。

三、过程与函数

PL/SQL中的过程和函数与其他语言的过程和函数一样,都是为了执行一定的任务而组合在一起的语句。过程无返回值,函数有返回值。其语法结构为:

过程:Create or replace procedure procname(参数列表) as PL/SQL语句块

函数:Create or replace function funcname(参数列表) return 返回值 as PL/SQL语句块

为便于理解,举例如下:

问题:假设有一张表t1,有f1和f2两个字段,f1为number类型,f2为varchar2类型,要往t1里写两条记录,内容自定。

Create or replace procedure test_procedure as 

V_f11 number :=1; /*声明变量并赋初值*/

V_f12 number :=2;

V_f21 varchar2(20) :='first';

V_f22 varchar2(20) :='second';

Begin 

Insert into t1 values (V_f11, V_f21);

Insert into t1 values (V_f12, V_f22);

End test_procedure; /*test_procedure可以省略*/


至此,test_procedure存储过程已经完成,经过编译后就可以在其他PL/SQL块或者过程中调用了。函数与过程具有很大的相似性,此处不再详述。

四、游标

游标的定义为:用游标来指代一个DML SQL操作返回的结果集。即当一个对数据库的查询操作返回一组结果集时,用游标来标注这组结果集,以后通过对游标的操作来获取结果集中的数据信息。这里特别提出游标的概念,是因为它在PL/SQL的编程中非常的重要。定义游标的语法结构如下:

cursor cursor_name is SQL语句;

在本文第一段代码中有一句话如下:

cursor c_emp is select * from employee where emp_id=3;

其含义是定义一个游标c_emp,代表employee表中所有emp_id字段为3的结果集。当需要操作该结果集时,必须完成三步:打开游标、使用fetch语句将游标里的数据取出、关闭游标。请参照本文第一段代码的注释理解游标操作的三步骤。

五、其他概念

PL/SQL中包的概念很重要,主要是对一组功能相近的过程和函数进行封装,类似于面向对象中的名字空间的概念。

触发器是一种特殊的存储过程,其调用者比较特殊,是当发生特定的事件才被调用,主要用于多表之间的消息通知。

 

作者:无 来源:无
】【关闭窗口
·上页:
·下页:
相关文章
     数据库类教程 - Oracle基础教程
推荐教程Oracle系统实用工具介绍
推荐教程Oracle9i地企业管理器介绍
推荐教程Oracle里面地数据字典技术初级初
推荐教程Oracle基本知识
推荐教程Oracle在DOS下地启动
推荐教程ORACLE公司地历史(1)
推荐教程Oracle PL/SQL语言初步掌握
普通教程关系型数据库系统简略介绍
普通教程目前趋势地两类关系型数据库系统
普通教程网络关系型数据库地代表Oracle 
普通教程Oracle 9i地特点
普通教程Oracle 9i地两种工作模式
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光