循环语句:LOOP,WHILE和数字式循环
一 简单循环
1 语法:
LOOP
要执行的语句;
EXIT WHEN <条件语句> --条件满足,退出循环语句
END LOOP;
2 例子:
DECLARE
int NUMBER(2) :=0;
BEGIN
LOOP
int := int + 1;
DBMS_OUTPUT.PUT_LINE('int 的当前值为:'||int);
EXIT WHEN int =10;
END LOOP;
END;
二 WHILE循环
1 语法:
WHILE <布尔表达式> LOOP
要执行的语句;
END LOOP;
2 例子:
DECLARE
x NUMBER :=1;
BEGIN
WHILE x<=10 LOOP
DBMS_OUTPUT.PUT_LINE('X的当前值为:'||x);
x:= x+1;
END LOOP;
END;
三 数字式循环
1 语法:
[<<循环标签>>]
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句;
END LOOP [循环标签];
每循环一次,循环变量自动加1;使用关键字REVERSE,循环变量自动减1。跟在IN REVERSE 后面的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。可以使用EXIT退出循环。
2 例子:
BEGIN
FOR int in 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('int 的当前值为: '||int);
END LOOP;
END;
CREATE TABLE temp_table(num_col NUMBER);
DECLARE
V_counter NUMBER := 10;
BEGIN
INSERT INTO temp_table(num_col) VALUES (v_counter );
FOR v_counter IN 20 .. 25 LOOP
INSERT INTO temp_table (num_col ) VALUES ( v_counter );
END LOOP;
INSERT INTO temp_table(num_col) VALUES (v_counter );
FOR v_counter IN REVERSE 20 .. 25 LOOP
INSERT INTO temp_table (num_col ) VALUES ( v_counter );
END LOOP;
END ;
DROP TABLE temp_table;
DECLARE
TYPE jobids_varray IS VARRAY(12) OF VARCHAR2(10); --定义一个VARRAY数据类型
v_jobids JOBIDS_VARRAY; --声明一个具有JOBIDS_VARRAY数据类型的变量
v_howmany NUMBER; --声明一个变量来保存雇员的数量
BEGIN
--用某些job_id值初始化数组
v_jobids := jobids_varray('FI_ACCOUNT', 'FI_MGR', 'ST_CLERK', 'ST_MAN');
--用FOR...LOOP...END LOOP循环使用每个数组成员的值
FOR i IN v_jobids.FIRST..v_jobids.LAST LOOP
--针对数组中的每个岗位,决定该岗位的雇员的数量
SELECT count(*) INTO v_howmany FROM employees WHERE job_id = v_jobids(i);
DBMS_OUTPUT.PUT_LINE ( '岗位'||v_jobids(i)||
'总共有'|| TO_CHAR(v_howmany) || '个雇员');
END LOOP;
END;
在While循环中嵌套loop循环
/*求100至110之间的素数*/
DECLARE
v_m NUMBER := 101;
v_i NUMBER;
v_n NUMBER := 0;
BEGIN
WHILE v_m < 110 LOOP
v_i := 2;
LOOP
IF mod(v_m, v_i) = 0 THEN
v_i := 0;
EXIT;
END IF;
v_i := v_i + 1;
EXIT WHEN v_i > v_m - 1;
END LOOP;
IF v_i > 0 THEN
v_n := v_n + 1;
DBMS_OUTPUT.PUT_LINE('第'|| v_n || '个素数是' || v_m);
END IF;
v_m := v_m + 2;
END LOOP;
END;
循环语句:LOOP,WHILE和数字式循环的更多相关文章
- oracle的控制语句if和循环语句loop while for
pl/sql的控制结构if-then if-then-else if-then-elsif-else 案例1:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该雇员工资增加10% ...
- c++中的结构化语句 判断语句if 分支语句switch 循环语句 while 和 do while 循环语句for的使用
作业1: 使用if语句,根据1~7的数字,输出今天是星期几?的程序. 方法一,直接使用单独的if语句 #include <iostream> using namespace std; in ...
- linux条件测试操作(test)和if判断语句,while循环语句,break控制语句和for循环和case多分枝语句和select语句
条件测试操作 条件测试是专为影响"$?"的操作,是条件转移.循环语句的基础 test测试命令: test 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0, ...
- sql 循环语句几种方式(变量循环,游标循环,事务)
--第一 ) ,),Orders )) declare @n int,@rows int --select @rows=count(1) from pe_Orders select @rows = ...
- python之最强王者(3)——变量,条件、循环语句
1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ...
- oracle 循环语句
1.基本循环(至少会执行一次) DECLARE I ; BEGIN LOOP --循环开始 DBMS_OUTPUT.PUT_LINE('VALUE:'||I); ; --退出循环条件: I:; --循 ...
- oracle学习--循环语句
oracle学习--循环语句 loop循环: create or replace procedure pro_test_loop is i number; begin i:=0; loop i:=i ...
- Spark记录-Scala循环语句
Scala while循环语句 当给定条件为真时,while循环重复一个语句或一组语句.它在执行循环体之前测试条件状态. 只要给定的条件为真,while循环语句重复执行目标语句. object Dem ...
- MySQL循环语句实例教程 mysql while循环测试
在mysql数据库中操作同样有循环语句操作,标准的循环方式: while 循环 . loop 循环和repeat循环.还有一种非标准的循环: goto. 鉴于goto 语句的跳跃性会造成使用的的思维混 ...
随机推荐
- RTT学习之线程
一 线程的创建和删除:rt_thread_create()创建的句柄,对应的删除rt_thread_delete(),注意线程的删除只是将线程的状态该为close,进入空闲任务才删除.rt_threa ...
- [转] js 实现table每列可左右拖动改变列宽度
<!DOCTYPE HTML> <html> <head> <meta charset="gbk"> <tit ...
- SimpleAdapter与listview,gridview的组合用法
首先要明白SimpleAdapter构造方法的几个参数的含义: public SimpleAdapter(Context context, List<? extends Map<Strin ...
- XAMPP: Another web server is already running
nginx 和 xampp 一起使用的时候,如果 nginx先启动,然后 再启动 xampp的时候,就是修改了 http.conf也是会报如果错误 liaohb@ubuntu-xtn->$sud ...
- Murano Deployment
2015-09-14 05:53:02 — Action deploy is scheduled 2015-09-14 05:53:03 — Unable to load due to 'could ...
- Murano Application
OpenStack Application Link: http://apps.openstack.org/ Those applications include Murano packages, H ...
- nginx+keepalived主辅切换(监控脚本在keepalived.conf中执行)
以前写过一篇,nginx+keepalived 双机互备的文章,写那篇文章的时候没有想过如果apache或者nginx 挂了,而 keepalived 或者 机器没有死,那么主辅是不会切换的,今天就研 ...
- .NET开发人员必知的八个网站
当前全球有数百万的开发人员在使用微软的.NET技术.如果你是其中之一,或者想要成为其中之一的话,我下面将要列出的每一个站点都应该是你的最爱,都应该收藏到书签中去.对于不熟悉.NET技术的朋友,需要说明 ...
- AngularJS 学习(-)Hello world
早期的AngularJS使我们的前端开发模式发生很大的变化,基使用MVC. Model - html 模板:Controller - js脚本; Model 来自于Web API 或其他Service ...
- C#中关于静态与非静态的一个疑问
关于静态方法.变量和非静态方法.变量的区别,园里的大神早就有了许多详细的总结,个人觉得静态方法.变量与非静态方法.变量的区别可以总结为以下两句话: 静态的是属于类的 非静态是属于对象的 就是说调用静态 ...