Oracle在数据库中引入了一种过程化编程语言,称为PL/SQL(Procedural Language/SQL).PL/SQL构建与SQL之上,可以用来编写包含SQL语句程序。其中包含这类语言的标准编程结构如下:
- 块结构
- 变量和类型
- 条件逻辑
- 循环
- 游标,其中保存着查询返回的结果
- 过程
- 函数
- 包,可以用来将过程和函数组合到一个单元中
通常,PL/SQL用于向数据库中加入业务逻辑。这种集中化的代码可以由任何能够访问数据库的程序调用,其中就包括C程序和Java程序。
块结构
PL/SQL程序可划分成称为块的结构,每一个块包含有PL/SQL和SQL语句。典型的PL/SQL代码包含如下的结构:
[DECLARE
declaration_statements
]
BEGIN
executable_statements
[EXCEPTION
exception_handing_statements
]
END;
声明和异常块是可选的,上述语法中的解释如下:
- declaration_statements 包含在声明块中,它负责声明该块其他部分将会使用的变量。这个变量对这个块来说是局部变量,也就是说不能从块的外部来访问这些变量。声明块总是放在块的开始位置。
- executable_statements 是块中实际可执行的语句。
- exception_handing_statements 中的语句负责处理可执行语句中可能发生的任何错误。
每一条语句都有分号结尾,整个块由关键字END标志结束。先看一个简单的例子:
-- Created on 2010-5-20 by ADMINISTRATOR
declare
-- Local variables here
width INTEGER;
height INTEGER:=2;
area INTEGER;
i integer;
begin
-- Test statements here
area:=6;
width:=area/height;
DBMS_OUTPUT.put_line('width='||width);
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.put_line('Division by zero');
end;
变量和类型
变量声明中包含名称和类型,还可以通过%TYPE关键字定义变量类型,这个关键字告诉PL/SQL使用与表中指定列相同的类型。下面这个例子用%TYPE声明了一个变量,这个变量类型与product表中price列类型相同。
product_price product.price%TYPE
条件逻辑
在PL/SQL中,IF、THEN、ELSE、ELSIF和ENDIF等关键字用于执行条件逻辑。下面的语法说明了条件逻辑的用法:
IF condition1 THEN
statement1
ELSIF condition2 THEN
statement2
ELSE
statement3
END IF;
循环
PL/SQL中包含三种循环:
简单循环:直到显式结束循环前一直运行。
WHILE循环:直到某个特定条件出现之前一直运行。
FOR循环:运行预先确定的次数。
简单循环
LOOP
statements
END LOOP;
要结束简单循环,可以使用EXIT或者EXIT WHEN语句。EXIT语句立即结束循环,EXIT WHEN语句在指定条件出现时结束循环。 举个简单例子:
LOOP
counter:=counter+1;
EXIT WHEN counter=5;
END LOOP;
WHILE循环
WHILE循环在某个特定条件出现之前一直运行。
举个例子:
counter=0;
WHILE counter<6 LOOP
counter:=counter+1;
END LOOP;
FOR循环
FOR循环会运行预先确定的次数,可通过给循环变量指定上限和下限来确定循环运行的次数,然后,循环变量在每次循环中递增或递减。语法如下:
FOR loop_variable IN [REVERSE] lower_bound ..upper_bound LOOP
statements
END LOOP;
如果使用了REVERSE则loop_variable每次减少1。
游标
当SELECT语句从数据库中返回的记录多余一条时,就可以使用游标。使用游标需要遵循以下5个步骤:
(1)声明一些变量,用于保存SELECT语句返回的列值。
(2)声明游标,并指定SELECT语句。
(3)打开游标。
(4)从游标中获取记录。
(5)关闭游标。
declare
v_username amc_base_user.user_name%TYPE;
CURSOR v_user_cursor IS
SELECT user_name FROM amc_base_user;
begin
OPEN v_user_cursor;
LOOP
FETCH v_user_cursor
INTO v_username;
EXIT WHEN v_user_cursor%NOTFOUND;
DBMS_OUTPUT.put_line(v_username);
END LOOP;
CLOSE v_user_cursor;
end;
注意:
1 声明完游标后此时游标并未打开,只有OPEN的时候才打开。
2 为了确定循环是否结束,可以使用布尔变量%NOTFOUND。当FETCH语句到达游标的最后一条记录时,这个变量为真。
3 游标使用完之后要及时关闭掉。
利用FOR循环的功能,可以增强在游标中访问记录的能力。当使用FOR循环时,可以不显式地打开和关闭游标----FOR循环会自动执行这些操作。
declare
v_username amc_base_user.user_name%TYPE;
CURSOR v_user_cursor IS
SELECT user_name FROM amc_base_user;
begin
FOR v_u IN v_user_cursor LOOP
DBMS_OUTPUT.put_line(v_u.user_name);
END LOOP;
end;
分享到:
相关推荐
pl/sal编程简介,介绍了pl/sql编程所用的基本语法,循环,条件,异常处理,自定义异常等等
PL/SQL 编程基础知识详解,PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在PL/SQL代码的程序单元中(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.。
ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八ORACLE PL/SQL编程之八
PL/SQL编程教程电子书,全册,完整版。。。。
pl/sql编程基础教程,内容丰富,适合初学者学习。
oracle pl/sql 编程大全,希望能对想学oracle或者oracle新手以及需要用到这方面知识的朋友有点帮助。
pl/sql 编程和oracle的函数查询,非常好用,欢迎下载
Oracle PL/SQL实例编程 Oracle PL/SQL实例编程 Oracle PL/SQL实例编程
PL/SOL是Oracle特有的编程语言,它不仅具有过程编程语言的基本特征(循环、条件分支等),而且还...本书不仅适合于PL/SQL初学者,而且也适合于有经验的PL/SQL编程人员,本书还可以作为Oracle培训班的教材或者辅助材料。
《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
Oracle PL/SQL 编程手册Oracle PL/SQL 编程手册
如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...
12oracle的PL/SQL编程-函数.包.触发器 PPT 12oracle的PL/SQL编程-函数.包.触发器 PPT
《oracle database 11gpl/sql编程实战》通过动手练习、大量的示例以及实际的项目帮助读者掌握pl/sql。书中包含大量最佳实践,涵盖了pl/sql语言所有的最新功能和改进之处。每章末尾配有测验题,可以帮助读者进一步...
Oracle PL/SQL 编程手册(SQL大全), 学习Oracle有用。
PL/SQL本身涉及的知识点浩瀚、庞杂,初学者根本无法依靠自身能力理清头绪,学习成本极高.本书对知识点进行了体系化的梳理,化繁杂为有序,突出重点,直指核心,循序渐进,尽可能为学习者提供“捷径”,仅仅只是这...
15oracle的PL/SQL编程-分页 PPT 15oracle的PL/SQL编程-分页 PPT
内容包括(1)PL/SQL简介(2)PL/SQL语法(3)存储过程(4)触发器(5)游标(6)包(7)函数七部分。如果你是初学者,很快时间就可以掌握PL/SQL了。相信我,没错的!