「PL/SQL」プロシージャでWHILE文を使って最初に条件を判定するサンプル

環境
Oracle Database 11g Release 11.2.0.1.0 – 64bit Production
PL/SQL Release 11.2.0.1.0 – Production

構文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE OR REPLACE PROCEDURE プロシージャ名
IS
変数名 データの型:=値
BEGIN
  WHILE 条件式
  LOOP
   処理コード
END LOOP;
END;
CREATE OR REPLACE PROCEDURE プロシージャ名 IS 変数名 データの型:=値 BEGIN   WHILE 条件式   LOOP    処理コード END LOOP; END;
CREATE OR REPLACE PROCEDURE プロシージャ名
IS
 変数名 データの型:=値
BEGIN
  WHILE 条件式
  LOOP
    処理コード
  END LOOP;
END;

while文を利用して、最初の判定でfalseの場合は、ループ処理が1回も行われません。

使用例
SQL構文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE OR REPLACE PROCEDURE TTSS2
IS
nn NUMBER(10) := 20;
BEGIN
WHILE nn < 25
LOOP
DBMS_OUTPUT.PUT_LINE(nn);-- 20 21 22 23 24が出力される
nn := nn + 1;
END LOOP;
END;
CREATE OR REPLACE PROCEDURE TTSS2 IS nn NUMBER(10) := 20; BEGIN WHILE nn < 25 LOOP DBMS_OUTPUT.PUT_LINE(nn);-- 20 21 22 23 24が出力される nn := nn + 1; END LOOP; END;
CREATE OR REPLACE PROCEDURE TTSS2
IS
  nn NUMBER(10) := 20;
BEGIN
      WHILE nn < 25 
      LOOP
            DBMS_OUTPUT.PUT_LINE(nn);-- 20 21 22 23 24が出力される
            nn := nn + 1;
      END LOOP;
END;

操作例
1.プロシージャ名「TTSS2」を作成します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> CREATE OR REPLACE PROCEDURE TTSS2
2 IS
3 nn NUMBER(10) := 20;
4 BEGIN
5 WHILE nn < 25
6 LOOP
7 DBMS_OUTPUT.PUT_LINE(nn);-- 20 21 22 23 24が出力される
8 nn := nn + 1;
9 END LOOP;
10 END;
11 /
プロシージャが作成されました。
SQL> CREATE OR REPLACE PROCEDURE TTSS2 2 IS 3 nn NUMBER(10) := 20; 4 BEGIN 5 WHILE nn < 25 6 LOOP 7 DBMS_OUTPUT.PUT_LINE(nn);-- 20 21 22 23 24が出力される 8 nn := nn + 1; 9 END LOOP; 10 END; 11 / プロシージャが作成されました。
SQL> CREATE OR REPLACE PROCEDURE TTSS2
  2  IS
  3    nn NUMBER(10) := 20;
  4  BEGIN
  5     WHILE nn < 25
  6     LOOP
  7             DBMS_OUTPUT.PUT_LINE(nn);-- 20 21 22 23 24が出力される
  8             nn := nn + 1;
  9     END LOOP;
 10  END;
 11  /

プロシージャが作成されました。

2.プロシージャを実行します

serverのoutputをonにして文字列を出力します
SQL> set serveroutput on
プロシージャを実行します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SQL> execute TTSS2()
20
21
22
23
24
PL/SQLプロシージャが正常に完了しました。
SQL> execute TTSS2() 20 21 22 23 24 PL/SQLプロシージャが正常に完了しました。
SQL> execute TTSS2()
20
21
22
23
24

PL/SQLプロシージャが正常に完了しました。

 

Oracle

Posted by arkgame