开发手机端网站模板,域名的注册方式,未做301重定向的网站,前端网站推荐一、WHILE循环您可以使用WHILE循环重复一系列语句#xff0c;直到控制条件不再为TRUE。 条件在每次迭代开始时进行评估。当条件为FALSE或NULL时#xff0c;循环终止。 如果条件在循环开始时为FALSE或NULL#xff0c;则不会执行进一步的迭代。
WHILE condition LOOPstatement…一、WHILE循环您可以使用WHILE循环重复一系列语句直到控制条件不再为TRUE。 条件在每次迭代开始时进行评估。当条件为FALSE或NULL时循环终止。 如果条件在循环开始时为FALSE或NULL则不会执行进一步的迭代。
WHILE condition LOOPstatement1;statement2;. . .
END LOOP;1在语法中
•条件是布尔变量或表达式TRUEFALSE或NULL•语句可以是一个或多个PL / SQL或SQL语句•如果条件中涉及的变量在循环体内不发生变化则条件保持为TRUE循环不会终止。
- 注意如果条件产生NULL则循环被绕过并且控制传递给循环后面的语句。
WHILE condition LOOPstatement1;statement2;. . .
END LOOP;
2在本例中国家代码CA和城市蒙特利尔的三个新位置ID正在添加。 该示例中显式声明了计数器。
DECLAREv_countryid locations.country_id%TYPE : CA;v_loc_id locations.location_id%TYPE;v_new_city locations.city%TYPE : Montreal;v_counter NUMBER : 1;
BEGINSELECT MAX(location_id) INTO v_loc_id FROM locationsWHERE country_id v_countryid;WHILE v_counter 3 LOOPINSERT INTO locations(location_id, city, country_id)VALUES((v_loc_id v_counter), v_new_city, v_countryid);v_counter : v_counter 1;END LOOP;
END;
3随着WHILE循环的每次迭代计数器v_counter递增。 如果迭代次数小于或等于数字3则执行循环内的代码并将一行插入到位置表中。
DECLAREv_countryid locations.country_id%TYPE : CA;v_loc_id locations.location_id%TYPE;v_new_city locations.city%TYPE : Montreal;v_counter NUMBER : 1;
BEGINSELECT MAX(location_id) INTO v_loc_id FROM locationsWHERE country_id v_countryid;WHILE v_counter 3 LOOPINSERT INTO locations(location_id, city, country_id)VALUES((v_loc_id v_counter), v_new_city, v_countryid);v_counter : v_counter 1;END LOOP;
END;
4计数器超过此城市和国家/地区的新位置数后控制循环的条件评估为FALSE循环终止。
DECLAREv_countryid locations.country_id%TYPE : CA;v_loc_id locations.location_id%TYPE;v_new_city locations.city%TYPE : Montreal;v_counter NUMBER : 1;
BEGINSELECT MAX(location_id) INTO v_loc_id FROM locationsWHERE country_id v_countryid;WHILE v_counter 3 LOOPINSERT INTO locations(location_id, city, country_id)VALUES((v_loc_id v_counter), v_new_city, v_countryid);v_counter : v_counter 1;END LOOP;
END;二、FOR循环描述
FOR循环具有与基本循环相同的通用结构。 另外它们在LOOP关键字之前有一个控制语句来设置PL / SQL执行的迭代次数。
FOR counter IN [REVERSE]lower_bound..upper_bound LOOPstatement1;statement2;. . .
END LOOP;1FOR循环规则
•使用FOR循环快速测试迭代次数。
•不要申报柜台; 它被隐含地声明。•lower_bound .. upper_bound是必需的语法。
FOR counter IN [REVERSE]lower_bound..upper_bound LOOPstatement1;statement2;. . .
END LOOP;
2FOR循环语法•Counter是一个隐式声明的整数其值在循环的每次迭代中自动增加或减少如果使用REVERSE关键字则减小直到达到上限或下限。•REVERSE使计数器从每个上限到下限迭代递减。 请注意下限是首先引用的。
•lower_bound指定计数器值范围的下限。•upper_bound指定计数器值范围的上限。
•不要申报柜台。 它被隐含地声明为一个整数。
3FOR循环示例
您已经学会了如何使用简单的LOOP和WHILE循环为国家代码CA和蒙特利尔市插入三个新位置。 幻灯片向您展示了如何通过使用FOR循环实现相同。
DECLAREv_countryid locations.country_id%TYPE : CA;v_loc_id locations.location_id%TYPE;v_new_city locations.city%TYPE : Montreal;
BEGINSELECT MAX(location_id) INTO v_loc_idFROM locationsWHERE country_id v_countryid;FOR i IN 1..3 LOOPINSERT INTO locations(location_id, city, country_id)VALUES((v_loc_id i), v_new_city, v_countryid );END LOOP;
END;
4FOR循环指南•仅在循环中引用计数器; 它在循环外部是未定义的。
•不要将计数器作为分配的目标。
•循环限制都不应为NULL。
5FOR循环表达式示例
在编写FOR循环时LOOP语句的下限和上限不需要是数字文字。 它们可以是转换为数值的表达式。
DECLAREv_lower NUMBER : 1;v_upper NUMBER : 100;
BEGINFOR i IN v_lower..v_upper LOOP...END LOOP;
END;
6何时使用循环指南
•循环内的语句必须至少执行一次时使用基本循环。•如果必须在每次迭代开始时评估条件则使用WHILE循环。•如果迭代次数已知则使用FOR循环。