SAK 図書館
Oracle PL/SQL 編2 - 制御構造、条件式、判断、多重判定、ループ、例外処理
■条件式 = 等しい < より小さい > より大きい <= 以下 >= 以上 <> 等しくない != 等しくない not 否定 and かつ or または is null NULL 判定 ■if 判断 if 条件 then 条件が真のとき else 条件が偽りのとき end if; ブール変数が TRUE は、TRUE(真) 扱いである。 FALSE(偽り)。 if a = 1 and b = 2 then c = 3; d = 4; end if if a = 1 and (b = 2 or b = 3) then c = 3; d = 4; end if if a = 1 and (b = 2 or b = 3) then null; /* なにもしない */ else c = 3; end if 文法 null; は、なにもしないと言う意味になります。 ■case 多重判定 (Oracle9i より前は case として if...elsif を使用) if 条件1 then 条件1 が真のとき elsif 条件2 then 条件2 が真のとき elsif 条件3 then 条件3 が真のとき else いずれの条件にも該当しないとき end if; ** elseif ではなく、elsif なので注意。 ■case 多重判定 (Oracle9i 以降) case 式 when 値 then ...; when 値 then ...; else ...; end case; case when 条件 then ...; when 条件 then ...; else ...; end case; ** Oracle9i からの機能なので注意。 case a when '0' then ...; when '1' then ...; else ...; end case; case when a = '0' then ...; when a > '1' then ...; else ...; end case; ■for ループ for カウンタ in 開始値..終了値 loop ... exit; /* ループ脱出 */ exit when 終了条件; /* 条件ループ脱出 */ end loop; for カウンタ in reverse 終了値..開始値 loop ... exit; /* ループ脱出 */ exit when 終了条件; /* 条件ループ脱出 */ end loop; for i in 1..10 loop ... end loop; for i in reverse 1..10 loop ... end loop; ■forall コレクションバルクバインド入力(bulk bind) forall インデックス in 開始値..終了値 SQL文; forall i in 1..10 delete from 受注m where 受注番号 = jcno(i); ■カーソル for ループ for カーソル_rec in カーソル loop (カーソル_rec.列名) ... exit; /* ループ脱出 */ exit when 終了条件; /* 条件ループ脱出 */ end loop; for cu_rec in cu loop update prmf set jcsu = jcsu + cu_rec.jcsu where prno = cu_rec.prno; end loop; cu_rec cu%rowtype; は、自動的に宣言される。 つまり、cu_rec は、宣言せずに使用できる。 ■while ループ while ループ条件 loop ... exit; /* ループ脱出 */ exit when 終了条件; /* 条件ループ脱出 */ end loop; ■loop ループ loop ... exit; /* ループ脱出 */ exit when 終了条件; /* 条件ループ脱出 */ end loop; << loop1 >> loop << loop2 >> loop << loop3 >> loop exit loop2 when 終了条件; end loop; end loop; /* exit loop2 でここにくる */ end loop; exit when 終了条件; の位置によって、ループを必ず 1 度は実行するか、 1 度も実行しないかの制御ができる。 ■exception 例外処理 exception when zero_divide then null; when value_error then ... when others then ... end; 文法 null; は、なにもしないと言う意味になります。 ■exit 脱出 exit; /* ループ脱出 */ exit when 終了条件; /* 条件ループ脱出 */ return; /* 関数脱出 */ return 戻り値; /* 関数脱出 */ ■Oracle PL/SQL 編資料
■SQL 基礎実地編資料
■SQL 基礎編資料
■SQL チューニング編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料