plsql--循环讨论

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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15720542/viewspace-617114/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值