PL/SQL提供3种不同的循环结构
-
LOOP循环
-
FOR循环
-
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/