PL/SQL - (2005/11/18 (金) 15:48:32) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*PL/SQL 雑記
**独立トランザクション
PL/SQLの宣言部(ISからBEGINの間)に次のように記述する。
> PRAGMA AUTONOMOUS_TRANSACTION;
-メインのトランザクションから独立したトランザクションとなる。
-プロシージャ(orファンクション)を抜けた時点でトランザクションは開放される。commitしてなければrollbackされると言うこと。
-デッドロックに注意。
**set ...
> set serveroutput on
*PL/SQL 雑記
**独立トランザクション
PL/SQLの宣言部(ISからBEGINの間)に次のように記述する。
> PRAGMA AUTONOMOUS_TRANSACTION;
-メインのトランザクションから独立したトランザクションとなる。
-プロシージャ(orファンクション)を抜けた時点でトランザクションは開放される。commitしてなければrollbackされると言うこと。
-デッドロックに注意。
**CURSORの中身を配列に保持。
LOOOP内でCURSORのOPEN,CLOSEを繰り返さないために。
> --カーソル定義
> CURSOR C01 IS
> SELECT ID, NAME FROM HOGE_TABLE;
> --ROWTYPE定義
> R01 C01%ROWTYPE;
> --コレクション型の定義
> TYPE ARRAY IS TABLE OF C01%ROWTYPE;
> LIST ARRAY := ARRAY(); --コレクションの初期化
> I NUMBER := 0; --添え字の定義
>
> OPEN C01;
> LOOP
> FETCH C01 INTO R01;
> EXIT WHEN C01%NOTFOUND; --フェッチ終了したら抜ける。
> I := I+1; --添え字をインクリメント
> LIST.EXTEND(I); --Rowを保持するために配列を拡張する。
> LIST(I) := R01; --拡張した領域にRow情報を代入。
> END LOOP;
> CLOSE C01;
>
> FOR X IN 1 .. I
> --こんな感じにカーソルを閉じた後もアクセス可能。
> DBMS_OUTPUT.PUT_LINE(LIST(X).ID || LIST(X).NAME);
> END LOOP;
他にもっといいやり方知っている方、教えてください。
**ストアド実行
-引数、戻り値無しの場合。
> exec hoge
-引数有り、戻り値無しの場合。
> exec hoge(1,2,3);
-引数有り、戻り値有りの場合。
> declare
> x integer;
> begin
> x := hoge;
> end;
> /
無名プロシージャ宣言と実行。
他のやり方がわかりません。
----
*何かあればどうぞ
#comment(vsize=2,nsize=20,size=40)
表示オプション
横に並べて表示:
変化行の前後のみ表示: