ITPub博客

首页 > Linux操作系统 > Linux操作系统 > plsql--循环讨论

plsql--循环讨论

原创 Linux操作系统 作者:oracle_db 时间:2009-10-21 23:59:36 0 删除 编辑

PL/SQL提供3种不同的循环结构

  1. LOOP循环

  2. FOR循环

  3. WHILE循环

每种循环被设计出来都有其特别的用意

最简单的LOOP循环例子

CREATE OR REPLACE PROCEDURE dbtest_loop (

start_number IN integer,

end_number IN integer

)

IS

current_number integer := start_number;--注意这里一定要先申明变量并且指定类型

BEGIN

LOOP

exit when current_number > end_number;

DBMS_OUTPUT.put_line ('current_number is '||current_number);

current_number := current_number + 1;――这里要指定步长

END LOOP;

END dbtest_loop;

FOR循环例子:

/* Formatted on 2008/12/11 09:40 (Formatter Plus v4.8.6) */

CREATE OR REPLACE PROCEDURE dbtest_forloop (

start_number IN integer,

end_number IN integer

)

IS

BEGIN

FOR current_number IN start_number .. end_number—―――――注意这里的current_number在使用前不需要申明

LOOP

DBMS_OUTPUT.put_line ('current_number is '||current_number);

END LOOP;

END dbtest_forloop;

注意FOR循环还有另外一种结构,如下例

PROCEDURE display_multiple_years (

start_year_in IN PLS_INTEGER

,end_year_in IN PLS_INTEGER

)

IS

BEGIN

FOR l_current_year IN (

SELECT * FROM sales_data

WHERE year BETWEEN start_year_in AND end_year_in)

LOOP

-- This procedure is now accepted a record implicitly declared

-- to be of type sales_data%ROWTYPE...

display_total_sales (l_current_year);

END LOOP;

END display_multiple_years;

3种循环结构就是WHILE循环,这种结构与简单的LOOP循环很相似,关键的区别在于它在循环前检查循环终止条件,它有可能一次也不执行循环休中的内容

WHILE循环例子如下:

CREATE OR REPLACE PROCEDURE display_multiple_years (

start_year_in IN PLS_INTEGER

,end_year_in IN PLS_INTEGER

)

IS

l_current_year PLS_INTEGER := start_year_in;

BEGIN

WHILE (l_current_year <= end_year_in)

LOOP

display_total_sales (l_current_year);

l_current_year := l_current_year + 1;

END LOOP;

END display_multiple_years;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-617114/,如需转载,请注明出处,否则将追究法律责任。

上一篇: bash shell 1
请登录后发表评论 登录
全部评论

注册时间:2008-11-13

  • 博文量
    158
  • 访问量
    308870