oracleストレージ・プロシージャ文の概要


oracleループ文のまとめ:
1、Exit When循環:
create or replace procedure proc_test_exit_when is  
i number;  
begin  
i:=0;  
LOOP  
Exit When(i>5);  
Dbms_Output.put_line(i);  
i:=i+1;  
END LOOP;  
end proc_test_exit_when;  
create or replace procedure proc_test_exit_when is
i number;
begin
i:=0;
LOOP
Exit When(i>5);
Dbms_Output.put_line(i);
i:=i+1;
END LOOP;
end proc_test_exit_when;

2、Loopサイクル:
create or replace procedure proc_test_loop is  
i number;  
begin  
i:=0;  
loop  
i:=i+1;  
dbms_output.put_line(i);  
if i>5 then  
exit;  
end if;  
end loop;  
end proc_test_loop;  
create or replace procedure proc_test_loop is
i number;
begin
i:=0;
loop
i:=i+1;
dbms_output.put_line(i);
if i>5 then
exit;
end if;
end loop;
end proc_test_loop;

3、While循環:
create or replace procedure proc_test_while is  
i number;  
begin  
i:=0;  
while i<5 loop  
i:=i+1;  
dbms_output.put_line(i);  
end loop;  
end proc_test_while;  
create or replace procedure proc_test_while is
i number;
begin
i:=0;
while i<5 loop
i:=i+1;
dbms_output.put_line(i);
end loop;
end proc_test_while;

4、For普通循環:
create or replace procedure proc_test_for is  
i number;  
begin  
i:=0;  
for i in 1..5 loop  
dbms_output.put_line(i);  
end loop;  
end proc_test_for;  
create or replace procedure proc_test_for is
i number;
begin
i:=0;
for i in 1..5 loop
dbms_output.put_line(i);
end loop;
end proc_test_for;

5、Forカーソルループ:
create or replace procedure proc_test_cursor is  
userRow test%rowtype;  
cursor userRows is  
select * from test;  
begin  
for userRow in userRows loop  
dbms_output.put_line(userRow.id||','||userRow.Name||','||userRows%rowcount);  
end loop;  
end proc_test_cursor;  
create or replace procedure proc_test_cursor is
userRow test%rowtype;
cursor userRows is
select * from test;
begin
for userRow in userRows loop
dbms_output.put_line(userRow.id||','||userRow.Name||','||userRows%rowcount);
end loop;
end proc_test_cursor;

ストアド・プロシージャに対応するコードを示します.テストは次の方法で行います.
pl/sqlに入り、ファイルを実行->新規->プログラムウィンドウ->空白、以上のセグメントコードをコピーし、pl/sql空白ウィンドウに、アンF 8でコンパイルを実行します.
ファイル->新規->コマンドウィンドウを実行し、コマンドウィンドウに入ってset serveroutput onというコードを実行し、execの対応するストレージ・プロシージャを入力します.ok.
第5のループではtestというテーブルフィールドid,nameを新規作成し,いくつかのデータを挿入してテストすればよい.
oracle条件文のまとめ:
Oracleの2つの条件付き制御文
1. IF......THEN
    ELSIF......THEN
    ELSE
    END IF;
2. CASE
    WHEN......THEN
    WHEN......THEN
    ELSE
    END CASE;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///IFの条件文
///////////////////////////////////////////////////////////////////////////////////////////////////////////
DECLARE  
  x NUMBER;  
  y VARCHAR2(10);  
BEGIN  
  x:=2;  
  IF x=1 THEN  
    y:='A';  
  ELSIF x=2 THEN  
    y:='B';  
  ELSIF x=3 THEN  
    y:='C';  
  ELSE  
    y:='Others';  
  END IF;  
  DBMS_OUTPUT.PUT_LINE('yの値は:'||y);  
END;  
/  
DECLARE x NUMBER; y VARCHAR2(10);BEGIN x:=2; IF x=1 THEN y:='A'; ELSIF x=2 THEN y:='B'; ELSIF x=3 THEN y:='C'; ELSE y:='Others'; END IF; DBMS_OUTPUT.PUT_LINE('yの値は:'||y);END;/
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//CASEの条件文
///////////////////////////////////////////////////////////////////////////////////////////////////////////
DECLARE  
  x NUMBER;  
  y VARCHAR2(10);  
BEGIN  
  x:=2;  
  CASE  
    WHEN x=1 THEN y='A';  
    WHEN x=2 THEN y='B';  
    WHEN x=3 THEN y='C';  
    ELSE y='Others';  
  END CASE;  
  DBMS_OUTPUT.PUT_LINE('yの値は:'||y);  
END;
 /