ROWTYPE(テーブルを元にした定義)の配列を定義するサンプルです。
サンプル
例)M_TESTテーブルのROWTYPEの配列を作成して、内容を出力するプロシージャ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
CREATE OR REPLACE PROCEDURE p_sample IS --ROWTYPEの配列を定義する rMTEST M_TEST%ROWTYPE; --M_TEST%ROWTYPEの配列を定義する TYPE tMTEST IS TABLE OF rMTEST M_TEST%TYPE INDEX BY BINARY_INTEGER; --定義した配列を宣言する tbl tMTEST; --カウンタ用変数 n NUMBER(5,0); --カーソル定義 CURSOR cur IS SELECT * FROM M_TEST; BEGIN --カウンタ用変数初期化 n := 0; --カーソルで取得した値をROWTYPEの配列に格納する FOR c1 IN cur LOOP n := n + 1; tbl(n).COL1 = c1.COL1; tbl(n).COL2 = c1.COL2; tbl(n).COL3 = c1.COL3; END LOOP; --ROWTYPEの配列をループして出力する FOR i IN i..n LOOP DMBS_OUTPUT.PUT_LINE(i || '-' || tbl(i).COL1); DMBS_OUTPUT.PUT_LINE(i || '-' || tbl(i).COL2); DMBS_OUTPUT.PUT_LINE(i || '-' || tbl(i).COL3); END LOOP; END p_sample; / |
- 実行例
- SQL> set serveroutput on SQL> exec p_sample 1-AAA 1-BBB 1-CCC 2-XXX 2-YYY 2-ZZZ PL/SQLプロシージャは正常に完了しました。 SQL>
実行前に「set serveroutput on」を実行しておく必要があります。
解説
- 4行目で、テーブルのROWTYPWを定義しています。
- 7行目で、4行目で定義した型の配列を定義しています。
- 10行目で、7行目で定義した配列を宣言しています。