机械 模具 夹具 数控 车床 工艺 液压 汽车 电机 升降台 控制 Proe CAD 建模 减速器 机械手 齿轮 故障 诊断 自动化 电气 监控 组态 电源 发电 水电 电站 单片机 PLC MATLAB 路径 计算机 Android Linux 电子 通信 管理系统 网站 ASP JSP PHP Java Asp.net 论坛 进销存 图书 考试 Web 购物 点餐 交易 平台 网络规划 配置 C++ C# 土木 建筑 施工 结构 框架 桥梁 水利 公路 隧道 造价 给水 教学楼 办公楼 水库 重力坝 化工 合成 工段 物流 仓储 包装 开题 任务书 外文 文献 翻译 答辩 格式 课程
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 免费毕业设计 毕业设计资料 毕业论文范文 代做毕业设计流程 
垫片
您现在所在的位置:首页 >>免费毕业设计 >> 文章内容
垫片
   我们提供全套毕业设计论文代做服务,联系点击这里给我发消息   914298682   
PL/ SQL编程简介
文章来源:www.biyezuopin.cc   发布者:毕业设计网站   发布时间:2019-02-10 10:45:51   阅读:112
;'>在这里:

l loop_variable是循环变量。你可以使用一个已经存在的变量作为循环变量,或者您也可以循环一个新创建的变量(如果不存在指定的变量则发生这种情况)。通过每次循环,循环变量的值增加1(如果使用REVERSE关键字则减少)。

l REVERSE表示循环变量的值是每次通过循环递减。循环变量被初始化为上边界,是递减1,直到循环变量达到下边界。你必须指定前上部边界的下边界。

l lower_bound是循环的下边界。循环的循环变量初始化为这个较低的边界提供反向是不used.

l upper_bound的上边界。如果使用反向循环变量则初始化此上边界。

下面的例子显示了一个For循环。请注意,变量v_counter2中没有明确定义,所以FOR循环会自动创建一个新的整数变量名为v_counter2

FOR v_counter2 IN 1..5

LOOP

DBMS_OUTPUT.PUT_LINE(v_counter2);

END LOOP;

The following example uses REVERSE:

FOR v_counter2 IN REVERSE 1..5

LOOP

DBMS_OUTPUT.PUT_LINE(v_counter2);

END LOOP;

在这个例子中,v_counter25开始,每次通过循环递减1,并等于1时结束。

5、游标

你可以使用游标来获取查询所返回的行。你使用游标中查询检索行,然后在光标每次从第一行取回。使用游标时,您通常会使用以下五个步骤:

1)声明变量用来存储一个行的列值。

2)声明游标,其中包含了查询。

3)打开游标

4)每次用光标一个从行中取值,存储在第1步中声明的变量的值。然后,进行一些与这些变量有关的操作,如在屏幕上显示出来,在计算中使用它们等。

5)关闭游标。

在下面的章节中中,你将了解这五个步骤的细节,你会看到一个简单的例子,得到从产品表中产品资料,名称和价格列。

步骤1:声明变量来存储列值

第一个步骤是声明用于存储列值的变量。这些变量必须是兼容的列类型。

提示:

刚才你看到,可以使用%TYPE类型声明的变量时,你使用%TYPEcolumn。 如果您使用%TYPE声明变量时,变量会自动将正确的类型。下面的示例声明三个变量来存储从产品表中的产品资料,名称和价格列,%TYPE用于自动设置的变量类型相同类型的列:

DECLARE

v_product_id products.product_id%型;

v_name products.name%型;

v_price products.price%型;

步骤2:声明游标

2步是声明游标。游标声明是一个你分配给光标或查询的执行的名称。游标声明,所有其他声明一样,要放在声明部分。声明游标的语法如下:

CURSOR cursor_name IS

SELECT_statement;

where

cursor_name is the name of the cursor.

SELECT_statement is the query.

在这里:

l cursor_name是游标的名称。

l 变量是可变的列值存储来自游标。

下面的例子声明了一个名为v_product_cursor查询的游标检索产品资料,姓名,以及从产品表列价格:

CURSOR v_product_cursor IS

SELECT product_id, name, price

FROM products

ORDER BY product_id;

查询直到打开游标才会执行。

3步:打开游标

3步是打开游标。使用OPEN语句打开游标,它必须放置在块中可执行文件里。下面的例子是执行查询,打开v_product_cursor

OPEN v_product_cursor;

步骤4:取行光标

4步是你使用FETCH语句从游标中提取行。FETCH语句读取的列值已在步骤1中声明的变量。FETCH使用语法如下:

FETCH cursor_name

INTO variable[, variable ...];

在这里:

l cursor_name是游标的名称。

l 变量是可变的列值,来自被存储游标。你需要提供每列值的匹配变量。

以下FETCH示例检索从v_product_cursor和商店中的列值的v_product_idv_name v_price的变量,之前已在第1步中创建:

FETCH v_product_cursor

INTO v_product_id, v_name, v_price;

因为游标可能包含许多行,我们需要一个循环读取它们。为了弄清楚何时结束循环,你可以使用的布尔变量v_product_cursorNOTFOUND。当没有更多的行在v_product_cursor读取是,这个变量为真。下面的例子显示了一个循环:

LOOP

-- fetch the rows from the cursor

FETCH v_product_cursor

INTO v_product_id, v_name, v_price;

-- exit the loop when there are no more rows, as indicated by

-- the Boolean variable v_product_cursor%NOTFOUND (= true when

-- there are no more rows)

EXIT WHEN v_product_cursor%NOTFOUND;

-- use DBMS_OUTPUT.PUT_LINE() to display the variables

DBMS_OUTPUT.PUT_LINE(

'v_product_id = ' || v_product_id || ', v_name = ' || v_name ||

', v_price = ' || v_price

);

END LOOP;

请注意,我用DBMS_OUTPUT.PUT_LINE()来显示读取的每一行的v_product_idv_namev_price变量。在实际应用中,你可以使用一个复杂的计算v_price

5步:关闭游标

5步是使用CLOSE语句关闭游标。关闭游标后可以释放系统资源。以下示例关闭:

v_product_cursor

CLOSE v_product_cursor;

 

 

 

 

PL/ SQL编程简介

Oracle数据库增加了一种程序的编程语言,即为被人熟知的PL / SQL(程序语言/ SQL)到Oracle数据库中。PL/ SQL使您可以编写包含SQL语句的程序。在本章中,您将了解下列PL / SQL内容:

l 块结构

l 变量和类型

l 条件逻辑

l 循环

l 返回游标:允许PL/ SQL读取结果查询

l 程序

l 功能

l 包:是用来组程序和功能集中在一个单位

l 触发器:这是当某个事件发生在运行代码块数据库

l Oracle 11g 数据库PL/ SQL功能的增强

您可以使用PL/ SQL数据库应用程序添加业务逻辑。这种集中式的业务逻辑可以通过任何可以访问数据库,包括SQL * PlusJavaC#等的程序来运行。

注意:

对于如何通过Java访问数据库的全部细节,请参阅我的书Oracle9iJDBC编程(Oracle出版社,2002年)。如何访问一个数据库,通过C#,看到我的书精通C#数据库编程(SYBEX2003)。

 

1. 块结构

PL / SQL程序被分成称为块的结构,每块都包含PL/SQLSQL语句。 PL / SQL块的结构如下:

[DECLARE

declaration_statements

]

BEGIN

executable_statements

[EXCEPTION

exception_handling_statements

]

END;

/

在这里:

l declaration_statements声明变量可用在PL / SQL块的其余部分使用。声明块是可选的。

l executable_statements的实际是可执行语句,其中可能包括循环,条件逻辑等等。

l exception_handling_statements是可以处理任何在块运行过程中可能出现的执行错误的语句。异常块是可选的。

每个语句用分号(;)中止,一个PL / SQL块使用斜线(/)字符终止。在我开始讲述PL/ SQL的细节前,大家来看到一个简单的例子来体会这种语言。下面的例子(包含的area_example.sql脚本在SQL目录)计算已知面积、高度的矩形的宽度:

SET SERVEROUTPUT ON

DECLARE

v_width INTEGER;

v_height INTEGER := 2;

v_area INTEGER := 6;

BEGIN

-- set the width equal to the area divided by the height

v_width := v_area / v_height;

DBMS_OUTPUT.PUT_LINE('v_width = ' || v_width);

EXCEPTION

WHEN ZERO_DIVIDE THEN

DBMS_OUTPUT.PUT_LINE('Division by zero');

END;

/

当你在SQL * Plus运行脚本时,SET SERVEROUTPUT ON命令让服务器输出,所以你可以在屏幕上看到DBMS_OUTPUT.PUT_LINE()产生的线。当初始命令传至PL / SQL块本身后,就会分为声明块,开始块,异常块。

声明块包含三个整数变量名为v_widthv_heightv_area(我总是把V_在开始的变量名)的声明。其中v_heightv_area变量被初始化为26

接下来是开始块,其中包含三行。第一行的注释包含文本定义宽度与面积除以高度的值相等。第二行定义v_widthv_area除以v_height,这意味着v_width设置为3= 6/2)。第三行调用DBMS_OUTPUT.PUT_LINE()在屏幕上显示v_width的值。DBMS_OUTPUT是一个内置的Oracle数据库的代码包; DBMS_OUTPUT在其他项目中,包含可让您的屏幕输出值的程序。

接下来,异常块处理任何将一个数字被零除的尝试。它通过捕获”ZERO_DIVIDE的异常。在这个例子中,实际上没有被零除的尝试,但如果你改变v_height的值为0并运行该脚本,你将会看到异常。

脚本的最后,用正斜杠字符(/)表示PL / SQL块的结束。

下面的清单显示在SQL * Plus脚本中area_example.sql的执行情况:

SQL> @ C:\SQL\area_example.sql

v_width = 3

注意:

如果你的area_example.sql脚本在目录不是C\ SQL,使用自己的目录中先前的命令。

2、变量和类型

声明块内声明的变量。正如你在前面的例子中看到,一个变量的声明都具有一个名称和一个类型。例如,v_width的变量即为v_width 整数型;

注意:

PL/ SQL类型是数据库的列类型相似。您可以在附录中看到的所有类型。下面的例子显示了更多的变量声明(这些变量可以用来存储从产品表中的列值):

v_product_id INTEGER;

v_product_type_id INTEGER;

v_name VARCHAR2 (30);

v_description VARCHAR2 (50);

v_price NUMBER (5, 2);

你也可以使用%TYPE关键字,它已经告知PL / SQL中使用相同类型指定表中的列指定变量的类型。下面的示例使用%TYPE声明一个变量相同类型的列的产品表,这是, NUMBER52)价格:

v_product_ price products. price % TYPE;

3、有条件的逻辑

你可以使用IFTHENELSEELSIFEND IF关键字来执行条件逻辑:

IF condition1 THEN

statements1

ELSIF condition2 THEN

statements2

ELSE

statements3

END IF;

在这里:

l 条件1和条件2是布尔表达式判定为真或假。

l 语句1,语句2,语句3PL / SQL语句。

条件的逻辑流程如下:

l 如果条件1为真,则语句执行。

l 如果条件1为假,但条件2为真,则语句执行。

l 如果条件1或条件2都不为真,则语句执行。

你还可以嵌入另一个IF语句在IF语句,如下面的例子:

IF v_count > 0 THEN

v_message := 'v_count is positive';

IF v_area > 0 THEN

v_message := 'v_count and v_area are positive';

END IF

ELSIF v_count = 0 THEN

v_message := 'v_count is zero';

ELSE

v_message := 'v_count is negative';

END IF;

在这个例子中,如果v_count大于0,则v_message被设置为是真的v_count”。如果v_countv_area是大于0,则v_message被设置为“v_countv_area为真。其余的逻辑很简单。

4、循环

你可以使用一个循环来运行语句零次或多次。在PL/ SQL中有三种类型的循环:

l 单循环:运行直到明确地结束循环。

l WHILE循环:运行直到出现指定的条件。

l FOR循环:按照预定数目的次数运行。

你将在下面的章节了解这些循环。

1)单循环

运行一个单循环,直到你明确地结束循环。一个单循环的语法如下:

LOOP

statements

END LOOP;

结束循环,你可以使用一个EXITEXIT WHEN语句。EXIT语句立即结束一个循环,当指定的条件发生时EXIT WHEN语句结束循环。

下面的例子显示了一个单循环。在循环开始前甲名为v_counter的变量被初始化为0。循环每增加1v_counter并并当v_counter等于5使用EXIT WHEN语句退出循环。

v_counter := 0;

LOOP

v_counter := v_counter + 1;

EXIT WHEN v_counter = 5;

END LOOP;

注意:

退出循环语句也可以出现在代码的任何地方。在Oracle 11g数据库中,你也可以使用的CONTINUECONTINUE WHEN语句结束当前迭代循环。CONTINUE语句无条件地结束当前的循环迭代,并继续执行下一次迭代。 CONTINUE WHEN语句当出现指定的条件时结束当前循环迭代时,然后继续执行下一次迭代。下面的例子显示CONTINUE语句的用法:

v_counter := 0;

LOOP

-- after the CONTINUE statement is executed, control returns here

v_counter := v_counter + 1;

IF v_counter = 3 THEN

CONTINUE; -- end current iteration unconditionally

END IF;

EXIT WHEN v_counter = 5;

END LOOP;

下一个例子显示了使用CONTINUE WHEN语句的用法:

v_counter := 0;

LOOP

-- after the CONTINUE WHEN statement is executed, control returns here

v_counter := v_counter + 1;

CONTINUE WHEN v_counter = 3; -- end current iteration when v_counter = 3

EXIT WHEN v_counter = 5;

END LOOP;

注意:

一个CONTINUECONTINUE WHEN语句不能跨越过程,函数或方法的。

2WHILE循环

while循环当指定的条件发生时运行。 WHILE循环的语法如下:

WHILE condition LOOP

statements

END LOOP;

下面的例子显示了一个当v_counter变量小于6时执行的while循环:

v_counter := 0;

WHILE v_counter < 6 LOOP

v_counter := v_counter + 1;

END LOOP;

3FOR循环

一个for循环运行预定的次数;你确定循环运行指定循环变量的上限和下限。然后循环变量递增(或递减),每一次循环。 FOR循环的语法如下:

FOR loop_variable IN [REVERSE] lower_bound..upper_bound

LOOP

statements

END LOOP;

在这里:

l loop_variable是循环变量。你可以使用一个已经存在的变量作为循环变量,或者您也可以循环一个新创建的变量(如果不存在指定的变量则发生这种情况)。通过每次循环,循环变量的值增加1(如果使用REVERSE关键字则减少)。

l REVERSE表示循环变量的值是每次通过循环递减。循环变量被初始化为上边界,是递减1,直到循环变量达到下边界。你必须指定前上部边界的下边界。

l lower_bound是循环的下边界。循环的循环变量初始化为这个较低的边界提供反向是不used.

l upper_bound的上边界。如果使用反向循环变量则初始化此上边界。

下面的例子显示了一个For循环。请注意,变量v_counter2中没有明确定义,所以FOR循环会自动创建一个新的整数变量名为v_counter2

FOR v_counter2 IN 1..5

LOOP

DBMS_OUTPUT.PUT_LINE(v_counter2);

END LOOP;

The following example uses REVERSE:

FOR v_counter2 IN REVERSE 1..5

LOOP

DBMS_OUTPUT.PUT_LINE(v_counter2);

END LOOP;

在这个例子中,v_counter25开始,每次通过循环递减1,并等于1时结束。

5、游标

你可以使用游标来获取查询所返回的行。你使用游标中查询检索行,然后在光标每次从第一行取回。使用游标时,您通常会使用以下五个步骤:

1)声明变量用来存储一个行的列值。

2)声明游标,其中包含了查询。

3)打开游标

4)每次用光标一个从行中取值,存储在第1步中声明的变量的值。然后,进行一些与这些变量有关的操作,如在屏幕上显示出来,在计算中使用它们等。

5)关闭游标。

在下面的章节中中,你将了解这五个步骤的细节,你会看到一个简单的例子,得到从产品表中产品资料,名称和价格列。

步骤1:声明变量来存储列值

第一个步骤是声明用于存储列值的变量。这些变量必须是兼容的列类型。

提示:

刚才你看到,可以使用%TYPE类型声明的变量时,你使用%TYPEcolumn。 如果您使用%TYPE声明变量时,变量会自动将正确的类型。下面的示例声明三个变量来存储从产品表中的产品资料,名称和价格列,%TYPE用于自动设置的变量类型相同类型的列:

DECLARE

v_product_id products.product_id%型;

v_name products.name%型;

v_price products.price%型;

步骤2:声明游标

2步是声明游标。游标声明是一个你分配给光标或查询的执行的名称。游标声明,所有其他声明一样,要放在声明部分。声明游标的语法如下:

CURSOR cursor_name IS

SELECT_statement;

where

cursor_name is the name of the cursor.

SELECT_statement is the query.

在这里:

l cursor_name是游标的名称。

l 变量是可变的列值存储来自游标。

下面的例子声明了一个名为v_product_cursor查询的游标检索产品资料,姓名,以及从产品表列价格:

CURSOR v_product_cursor IS

SELECT product_id, name, price

FROM products

ORDER BY product_id;

查询直到打开游标才会执行。

3步:打开游标

3步是打开游标。使用OPEN语句打开游标,它必须放置在块中可执行文件里。下面的例子是执行查询,打开v_product_cursor

OPEN v_product_cursor;

步骤4:取行光标

4步是你使用FETCH语句从游标中提取行。FETCH语句读取的列值已在步骤1中声明的变量。FETCH使用语法如下:

FETCH cursor_name

INTO variable[, variable ...];

在这里:

l cursor_name是游标的名称。

l 变量是可变的列值,来自被存储游标。你需要提供每列值的匹配变量。

以下FETCH示例检索从v_product_cursor和商店中的列值的v_product_idv_name v_price的变量,之前已在第1步中创建:

FETCH v_product_cursor

INTO v_product_id, v_name, v_price;

因为游标可能包含许多行,我们需要一个循环读取它们。为了弄清楚何时结束循环,你可以使用的布尔变量v_product_cursorNOTFOUND。当没有更多的行在v_product_cursor读取是,这个变量为真。下面的例子显示了一个循环:

LOOP

-- fetch the rows from the cursor

FETCH v_product_cursor

INTO v_product_id, v_name, v_price;

-- exit the loop when there are no more rows, as indicated by

-- the Boolean variable v_product_cursor%NOTFOUND (= true when

-- there are no more rows)

EXIT WHEN v_product_cursor%NOTFOUND;

-- use DBMS_OUTPUT.PUT_LINE() to display the variables

DBMS_OUTPUT.PUT_LINE(

'v_product_id = ' || v_product_id || ', v_name = ' || v_name ||

', v_price = ' || v_price

);

END LOOP;

请注意,我用DBMS_OUTPUT.PUT_LINE()来显示读取的每一行的v_product_idv_namev_price变量。在实际应用中,你可以使用一个复杂的计算v_price

5步:关闭游标

5步是使用CLOSE语句关闭游标。关闭游标后可以释放系统资源。以下示例关闭:

v_product_cursor

CLOSE v_product_cursor;

 

 

 

,

PL/ SQL编程简介

Oracle数据库增加了一种程序的编程语言,即为被人熟知的PL / SQL(程序语言/ SQL)到Oracle数据库中。PL/ SQL使您可以编写包含SQL语句的程序。在本章中,您将了解下列PL / SQL内容:

l 块结构

l 变量和类型

l 条件逻辑

l 循环

l 返回游标:允许PL/ SQL读取结果查询

l 程序

l 功能

l 包:是用来组程序和功能集中在一个单位

l 触发器:这是当某个事件发生在运行代码块数据库

l Oracle 11g 数据库PL/ SQL功能的增强

您可以使用PL/ SQL数据库应用程序添加业务逻辑。这种集中式的业务逻辑可以通过任何可以访问数据库,包括SQL * PlusJavaC#等的程序来运行。

注意:

对于如何通过Java访问数据库的全部细节,请参阅我的书Oracle9iJDBC编程(Oracle出版社,2002年)。如何访问一个数据库,通过C#,看到我的书精通C#数据库编程(SYBEX2003)。

 

1. 块结构

PL / SQL程序被分成称为块的结构,每块都包含PL/SQLSQL语句。 PL / SQL块的结构如下:

[DECLARE

declaration_statements

]

BEGIN

executable_statements

[EXCEPTION

exception_handling_statements

]

END;

/

在这里:

l declaration_statements声明变量可用在PL / SQL块的其余部分使用。声明块是可选的。

l executable_statements的实际是可执行语句,其中可能包括循环,条件逻辑等等。

l exception_handling_statements是可以处理任何在块运行过程中可能出现的执行错误的语句。异常块是可选的。

每个语句用分号(;)中止,一个PL / SQL块使用斜线(/)字符终止。在我开始讲述PL/ SQL的细节前,大家来看到一个简单的例子来体会这种语言。下面的例子(包含的area_example.sql脚本在SQL目录)计算已知面积、高度的矩形的宽度:

SET SERVEROUTPUT ON

DECLARE

v_width INTEGER;

v_height INTEGER := 2;

v_area INTEGER := 6;

BEGIN

-- set the width equal to the area divided by the height

v_width := v_area / v_height;

DBMS_OUTPUT.PUT_LINE('v_width = ' || v_width);

EXCEPTION

WHEN ZERO_DIVIDE THEN

DBMS_OUTPUT.PUT_LINE('Division by zero');

END;

/

当你在SQL * Plus运行脚本时,SET SERVEROUTPUT ON命令让服务器输出,所以你可以在屏幕上看到DBMS_OUTPUT.PUT_LINE()产生的线。当初始命令传至PL / SQL块本身后,就会分为声明块,开始块,异常块。

声明块包含三个整数变量名为v_widthv_heightv_area(我总是把V_在开始的变量名)的声明。其中v_heightv_area变量被初始化为26

接下来是开始块,其中包含三行。第一行的注释包含文本定义宽度与面积除以高度的值相等。第二行定义v_widthv_area除以v_height,这意味着v_width设置为3= 6/2)。第三行调用DBMS_OUTPUT.PUT_LINE()在屏幕上显示v_width的值。DBMS_OUTPUT是一个内置的Oracle数据库的代码包; DBMS_OUTPUT在其他项目中,包含可让您的屏幕输出值的程序。

接下来,异常块处理任何将一个数字被零除的尝试。它通过捕获”ZERO_DIVIDE的异常。在这个例子中,实际上没有被零除的尝试,但如果你改变v_height的值为0并运行该脚本,你将会看到异常。

脚本的最后,用正斜杠字符(/)表示PL / SQL块的结束。

下面的清单显示在SQL * Plus脚本中area_example.sql的执行情况:

SQL> @ C:\SQL\area_example.sql

v_width = 3

注意:

如果你的area_example.sql脚本在目录不是C\ SQL,使用自己的目录中先前的命令。

2、变量和类型

声明块内声明的变量。正如你在前面的例子中看到,一个变量的声明都具有一个名称和一个类型。例如,v_width的变量即为v_width 整数型;

注意:

PL/ SQL类型是数据库的列类型相似。您可以在附录中看到的所有类型。下面的例子显示了更多的变量声明(这些变量可以用来存储从产品表中的列值):

v_product_id INTEGER;

v_product_type_id INTEGER;

v_name VARCHAR2 (30);

v_description VARCHAR2 (50);

v_price NUMBER (5, 2);

你也可以使用%TYPE关键字,它已经告知PL / SQL中使用相同类型指定表中的列指定变量的类型。下面的示例使用%TYPE声明一个变量相同类型的列的产品表,这是NUMBER52)价格:

v_product_ price products. price % TYPE;

3、有条件的逻辑

你可以使用IFTHENELSEELSIFEND IF关键字来执行条件逻辑:

IF condition1 THEN

statements1

ELSIF condition2 THEN

statements2

ELSE

statements3

END IF;

在这里:

l 条件1和条件2是布尔表达式判定为真或假。

l 语句1,语句2,语句3PL / SQL语句。

条件的逻辑流程如下:

l 如果条件1为真,则语句执行。

l 如果条件1为假,但条件2为真,则语句执行。

l 如果条件1或条件2都不为真,则语句执行。

你还可以嵌入另一个IF语句在IF语句,如下面的例子:

IF v_count > 0 THEN

v_message := 'v_count is positive';

IF v_area > 0 THEN

v_message := 'v_count and v_area are positive';

END IF

ELSIF v_count = 0 THEN

v_message := 'v_count is zero';

ELSE

v_message := 'v_count is negative';

END IF;

在这个例子中,如果v_count大于0,则v_message被设置为是真的v_count”。如果v_countv_area是大于0,则v_message被设置为“v_countv_area为真。其余的逻辑很简单。

4、循环

你可以使用一个循环来运行语句零次或多次。在PL/ SQL中有三种类型的循环:

l 单循环:运行直到明确地结束循环。

l WHILE循环:运行直到出现指定的条件。

l FOR循环:按照预定数目的次数运行。

你将在下面的章节了解这些循环。

1)单循环

运行一个单循环,直到你明确地结束循环。一个单循环的语法如下:

LOOP

statements

END LOOP;

结束循环,你可以使用一个EXITEXIT WHEN语句。EXIT语句立即结束一个循环,当指定的条件发生时EXIT WHEN语句结束循环。

下面的例子显示了一个单循环。在循环开始前甲名为v_counter的变量被初始化为0。循环每增加1v_counter并并当v_counter等于5使用EXIT WHEN语句退出循环。

v_counter := 0;

LOOP

v_counter := v_counter + 1;

EXIT WHEN v_counter = 5;

END LOOP;

注意:

退出循环语句也可以出现在代码的任何地方。在Oracle 11g数据库中,你也可以使用的CONTINUECONTINUE WHEN语句结束当前迭代循环。CONTINUE语句无条件地结束当前的循环迭代,并继续执行下一次迭代。 CONTINUE WHEN语句当出现指定的条件时结束当前循环迭代时,然后继续执行下一次迭代。下面的例子显示CONTINUE语句的用法:

v_counter := 0;

LOOP

-- after the CONTINUE statement is executed, control returns here

v_counter := v_counter + 1;

IF v_counter = 3 THEN

CONTINUE; -- end current iteration unconditionally

END IF;

EXIT WHEN v_counter = 5;

END LOOP;

下一个例子显示了使用CONTINUE WHEN语句的用法:

v_counter := 0;

LOOP

-- after the CONTINUE WHEN statement is executed, control returns here

v_counter := v_counter + 1;

CONTINUE WHEN v_counter = 3; -- end current iteration when v_counter = 3

EXIT WHEN v_counter = 5;

END LOOP;

注意:

一个CONTINUECONTINUE WHEN语句不能跨越过程,函数或方法的。

2WHILE循环

while循环当指定的条件发生时运行。 WHILE循环的语法如下:

WHILE condition LOOP

statements

END LOOP;

下面的例子显示了一个当v_counter变量小于6时执行的while循环:

v_counter := 0;

WHILE v_counter < 6 LOOP

v_counter := v_counter + 1;

END LOOP;

3FOR循环

一个for循环运行预定的次数;你确定循环运行指定循环变量的上限和下限。然后循环变量递增(或递减),每一次循环。 FOR循环的语法如下:

FOR loop_variable IN [REVERSE] lower_bound..upper_bound

LOOP

statements

END LOOP;


打印本页 | 关闭窗口
  下一篇文章:Introducing PL/SQL Programming
本类最新文章
Orbal 氧化沟除氮新工艺 浅谈混凝土的施工过程中温度与裂缝 测定金属铸造–冷却接口的非稳态凝
什么是Android? 城市污水处理设施的能源效率策略 模块化混凝土梁桥和IPC桁架梁人
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:[email protected] 在线QQ: 点击这里给我发消息  914298682 毕业作品网站是国家工信部备案的正规代做网站  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!