Tag: IF语句预览模式: 普通 | 列表

Oracle:IF语句 Loop循环 Cursor的用法(一)

九月是荒废的一月,因为工作 生活中的种种不如意,使很多本该完成的事情都没有去做.心思越重,心则致远.我还是要过我自己的生活,未来的事情,希望能不给自己添赌.

这个我一时忘记是从哪里获取来的,只是IF..Else与Loop的结合使用在PL-SQL中运用得很多,发挥的作用也是不言而喻的.


那就从最基本的开始吧,我这里也只能给出Example代码,权当复习一下,与大家分享

1.IF语句

基本的语句:

格式: IF 条件 THEN
         执行.
END IF

Example:


set serveroutput on

DECLARE
x NUMBER(3) := 9;
BEGIN
  IF x < 10 THEN
    dbms_output.put_line('X is less than 10');
  END IF;
END;
/



2.IF - ELSE 语句

格式:
IF <条件> THEN
  <执行语句>
ELSE
  <执行语句>
END IF;

Example:

set serveroutput on
DECLARE
x NUMBER(3) := 10;
BEGIN
  IF x < 10 THEN
    dbms_output.put_line('X is less than 10');
  ELSE
    dbms_output.put_line('X is not less than 10');
  END IF;
END;
/


3.IF - ELSIF - ELSE 语句
格式:
IF <执行的条件>THEN
<执行代码>
ELSIF <执行的条件>THEN
<执行代码>
ELSIF <执行的条件>THEN
<执行代码>
ELSE
<执行代码>
END IF;
Example:

set serveroutput on

DECLARE
x NUMBER(3) := 47;
BEGIN
  IF x < 10 THEN
    dbms_output.put_line('X 小于 10');
  ELSIF x = 10 THEN
    dbms_output.put_line('X 等于 10');
  ELSIF x < 100 THEN
    dbms_output.put_line('X 在 11 与 99 之间');
  ELSE
    dbms_output.put_line('X 大于 99');
  END IF;
END;
/







Basic Loop

测试表:
Create TABLE loop_test (test_col VARCHAR2(5));

1.Loop


格式:
LOOP
<执行代码>
END LOOP;

Example:

DECLARE
i PLS_INTEGER := 1;
BEGIN
  LOOP
    i := i + 1;

    Insert INTO loop_test VALUES (i);

    IF i > 99 THEN
      EXIT;
    END IF;
  END LOOP;
  COMMIT;
END;
/

Select * FROM loop_test;



注:基本的LOOP循环的执行需要通过代码去判断何时开始与结束


2.While Loop

如果不能确定循环的基数时,采用WHILE LOOP.While LOOP是保证至少执行了一次循环


WHILE <执行的条件>
LOOP
<执行代码>
END LOOP;



DECLARE
i PLS_INTEGER := 999;
BEGIN
  WHILE i < 1100 LOOP
    i := i + 1;

    Insert INTO loop_test VALUES (i);
  END LOOP;
  COMMIT;
END;
/

Select * FROM loop_test;




3.FOR Loop

格式:
-- incrementing
FOR <变量>IN <开始数> .. <结束数>
LOOP
<执行代码>
END LOOP;

-- decrementing
FOR <变量>IN REVERSE <开始数> .. <结束数>
LOOP
<执行代码>
END LOOP;

Example:

BEGIN
  FOR i IN 2000 .. 2100 LOOP
    Insert INTO loop_test VALUES (i);
  END LOOP;
  COMMIT;
END;
/

Select * FROM loop_test;

BEGIN
  FOR i IN REVERSE 3000 .. 3100 LOOP
    Insert INTO loop_test VALUES (i);
  END LOOP;
  COMMIT;
END;
/

Select * FROM loop_test;





Continue的用法

格式:

LOOP
<执行代码>
  CONTINUE;
<执行代码>
END LOOP;

Example:

set serveroutput on

Create or REPLACE PROCEDURE cont_test (val IN POSITIVEN) IS
BEGIN
  FOR i IN 1 .. 3 LOOP
    dbms_output.put_line('i=' || TO_CHAR(i));

    IF val = 2 THEN
      CONTINUE;
    END IF;

    dbms_output.put_line('Did not jump to the top of the loop');
  END LOOP;
END cont_test;
/

exec cont_test(3);
exec cont_test(2);




查看更多...

Tags: IF语句 {172}{173

分类:编程技术 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 12886

Oracle PL/SQL:IF语句的使用

原文:http://psoug.org/reference/control_struct.html
IF语句的使用
A.基本的IF条件语句:
基本语法:


IF <condition> THEN
  <code here>
END IF;


Example:

SQL> set serveroutput on;
SQL> declare
   x number(3):=9;
    begin
    if x<10 then
    dbms_output.put_line('x is less than10');
    end if;
   end;
   /


结果:
x is less than10

PL/SQL procedure successfully completed



B.IF - ELSE 语句

基本语法:

IF <condition> THEN
  <code here>
ELSE
  <code here>
END IF;


Example:


DECLARE
x NUMBER(3) := 10;
BEGIN
  IF x < 10 THEN
    dbms_output.put_line('X is less than 10');
  ELSE
    dbms_output.put_line('X is not less than 10');
  END IF;
END;
/


结果:
X is not less than 10

PL/SQL procedure successfully completed


C:IF - ELSIF - ELSE 语句

基本语法:

IF <condition> THEN
  <code here>
ELSIF <condition> THEN
  <code here>
ELSIF <condition> THEN
  <code here>
ELSE
  <code here>
END IF;





Example:


set serveroutput on

DECLARE
x NUMBER(3) := 47;
BEGIN
  IF x < 10 THEN
    dbms_output.put_line('X is less than 10');
  ELSIF x = 10 THEN
    dbms_output.put_line('X is equal to 10');
  ELSIF x < 100 THEN
    dbms_output.put_line('X is between 11 and 99');
  ELSE
    dbms_output.put_line('X is greater than 99');
  END IF;
END;
/



结果:
X is between 11 and 99

PL/SQL procedure successfully completed


D:与NULL值比较处理

Example:


declare
       v NUMBER;
   begin
       if v = 1 then
           DBMS_OUTPUT.put_line('Equal to 1');
       elsif v!= 1 then
           DBMS_OUTPUT.put_line('Not equal to 1');
       elsif v = v then
           DBMS_OUTPUT.put_line('Equal to itself');
       else
           DBMS_OUTPUT.put_line('Undefined result');
       end if;
       v:=v+1;
       DBMS_OUTPUT.put_line('New value: <'||v||'>');
   end;
/


结果:

Undefined result
New value: <>

PL/SQL procedure successfully completed



查看更多...

Tags: IF语句

分类:编程技术 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 8058