oracle循环输入,Oracle的控制语句(条件,循环...)

传说:PL/SQL不仅可以嵌入SQL语句

还可以支持条件分支语句(IF,CASE)、循环语句(LOOP)和顺序控制语句(GOTO,NULL)

☆条件分支语句

1.简单条件判断

DECLARE

v_sal NUMBER(6,2);

BEGIN

SELECT sal INTO v_sal FROM emp

WHERE lower(ename)=lower('&&name');

IF v_sal<2000 THEN

UPDATE emp SET sal=v_sal+200

WHERE lower(ename)=lower('&name');

END IF;

END;

/

2.二重条件分支

DECLARE

v_comm NUMBER(6,2);

BEGIN

SELECT comm INTO v_comm FROM emp

WHERE empno=&&no;

IF v_comm<>0 THEN

UPDATE emp SET comm=v_comm+100

WHERE empno=&no;

ELSE

UPDATE emp SET comm=200

WHERE empno=&no;

END IF;

END;

/

输入no的值:xxx

3.多重条件分支

DECLARE

v_job VARCHAR2(10);

V_sal NUMBER(6,2);

BEGIN

SELECT job,sal INTO v_job,v_sal

FROM emp WHERE empno=&&no;

IF v_job='PRESIDENT' THEN

UPDATE emp SET sal =v_sal+1000 WHERE empno=&no;

ELSEIF v_job='MANAGER' THEN

UPDATE emp SET sal=v_sal+500 WHERE empno=&no;

ELSE

UPDATE emp SET sal=v_sal+200 WHERE empno=&no;

END IF;

END;

☆CASE语句

CASE语句主要处理多重条件分支。

1.使用单一选择符进行等值比较

DECLARE

v_deptno emp.deptno%TYPE;

BEGIN

v_deptno:=&no;

CASE v_deptno

WHEN 10 THEN

UPDATE emp SET comm=100 WHERE deptno=v_deptno;

WHEN 20 THEN

UPDATE emp SET comm=80 WHERE deptno=v_deptno;

WHEN 30 THEN

UPDATE emp SET comm=30 WHERE deptno=v_deptno;

ELSE

dbms_output.putline('不存在该部门');

END CASE;

END;

/

2.在CASE语句中使用多种条件比较

当使用单一条件选择符进行等值比较时,可以使用CASE xxx 语法来实现,如果包含有多种条件进行不等比较,那么必须在WHEN子句中指定比较条件

DECLARE

v_sal emp.sal%TYPE;

v_ename emp.ename%TYPE;

BEGIN

SELECT sal ,ename INTO v_sal,v_ename FROM emp

WHERE empno=&no;

CASE

WHEN v_sal<1000 THEN

UPDATE emp SET comm=100 WHERE ename=v_ename;

WHEN v_sal<2000 THEN

UPDATE emp SET comm=80 WHERE ename=v_ename;

WHEN v_sal<6000 THEN

UPDATE emp SET comm=50 WHERE ename=v_ename;

END CASE;

END;

/

☆循环语句

1.基本循环

DECLARE

i INT:=1;

BEGIN

LOOP

INSERT INTO temp VALUES(i);

EXIT WHEN i=10;

i:=i+1;

END LOOP;

END;

/

2.WHILE循环

基本循环至少执行一次循环体内的语句,而对于WHILE循环来说,只有条件为TRUE才会执行循环体内的语句。

以WHILE..LOOP 开始 END LOOP结束。

DECLARE

i INT:=1;

BEGIN

WHILE i<=10 LOOP

INSERT INTO temp VALUES(i);

i:=i+1;

END LOOP;

END;

/

3.FOR循环

BEGIN

FOR i IN 1..10 LOOP

INSERT INTO temp VALUES(i);

END LOOP;

END;

/

* 4.嵌套循环和标号

指在一个循环语句中嵌入另一个循环语句,而标号(Label)则用于标记嵌套块或嵌套循环。

DECLARE

result INT;

BEGIN

<>

FOR i IN 1..100 LOOP

<>

FOR j IN 1..100 LOOP

result:=i*j;

EXIT outer WHEN result=1000;

EXIT WHEN result=500;

END LOOP inner;

dbms_output.put_line(result);

END LOOP outer;

dbms_output.put_line(result);

END;

/

.....这个说是当执行以上PL/SQL块时,如果result=1000,那么会直接退出外层循环,而当result=500时只会退出内层循环。

到目前为止,这个循环我还不明所以....

105479136_1.gif

*4顺序控制语句

GOTO 和 NULL语句,一般情况不要使用,影响发育,暂且略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值