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;
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;
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;
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;
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;
ストアド・プロシージャに対応するコードを示します.テストは次の方法で行います.
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;
/
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;
/