SQLのwhileの書き方【PL SQL基礎】
Sal
sql 通常のプログラミング言語ではループを一つ抜け出す際にbreakというキーワードを用いることがほとんどですがpl sqlではEXIT WHENを使用します。

SQLのwhileの書き方【PL SQL基礎】

  1. 通常のsqlにfor文は存在しない。
  2. まさに無限ループ!
  3. sqlのbreak
## 通常のsqlにfor文は存在しない。
まず大前提として、「通常のSQLにfor文は存在しません」 そもそもSQLにはいくつか種類がありますが、それらがサポートする ものは以下のキーワードのみです。 出典: PL/SQLの予約語およびキーワード)

表D-1 PL/SQLの予約語

頭文字: 予約語

A

ALL、ALTER、AND、ANY、AS、ASC、AT

B

BEGIN、BETWEEN、BY

C

CASE、CHECK、CLUSTERS、CLUSTER、COLAUTH、COLUMNS、COMPRESS、CONNECT、CRASH、CREATE、CURSOR

D

DECLARE、DEFAULT、DESC、DISTINCT、DROP

E

ELSE、END、EXCEPTION、EXCLUSIVE

F

FETCH、FOR、FROM、FUNCTION

G

GOTO、GRANT、GROUP

H

HAVING

I

IDENTIFIED、IF、IN、INDEX、INDEXES、INSERT、INTERSECT、INTO、IS

L

LIKE、LOCK

M

MINUS、MODE

N

NOCOMPRESS、NOT、NOWAIT、NULL

O

OF、ON、OPTION、OR、ORDER、OVERLAPS

P

PROCEDURE、PUBLIC

R

RESOURCE、REVOKE

S

SELECT、SHARE、SIZE、SQL、START、SUBTYPE

T

TABAUTH、TABLE、THEN、TO、TYPE

U

UNION、UNIQUE、UPDATE

V

VALUES、VIEW、VIEWS

W

WHEN、WHERE、WITH


このリストを見るとわかるように、通常のSQLの中にはこれらのキーワードは存在しません。 本記事に登場するキーワードはSQLの中でも「PL/SQL」と呼ばれる種類のみです。 本記事で学習する前に、データベースサーバーがPL/SQLをサポートしているものかどうかを確認することをお勧めします。
## まさに無限ループ!
まずはwhileを使った無限ループから

BEGIN
   WHILE (1=1) LOOP
           DBMS_OUTPUT.PUT_LINE('呼び出されます');
           DBMS_OUTPUT.PUT_LINE('これも呼び出されます');
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('呼び出されます');
END;

## sqlのbreak
通常のプログラミング言語ではループを一つ抜け出す際にbreakというキーワードを用いることがほとんどですが pl sqlではEXIT WHENを使用します。

BEGIN
   WHILE (1=1) LOOP
           DBMS_OUTPUT.PUT_LINE('呼び出されます');
           EXIT WHEN (1=1) ;
           DBMS_OUTPUT.PUT_LINE('呼び出されません');
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('呼び出されます');
END;

title:SQLのwhileの書き方【PL SQL基礎】 description:通常のプログラミング言語ではループを一つ抜け出す際にbreakというキーワードを用いることがほとんどですがpl sqlではEXIT WHENを使用します。 img:https://images.squarespace-cdn.com/content/v1/5c3cf2ac5417fc3efa512c5a/1547588142968-VWQR0WMNFIX7GW18937A/lrg.jpg category_script:page_name.startswith("25")