PL SQL表タイプは、実際には配列のようなコレクションです。 PL SQLコレクションを使用すると、バルク・データを効率的に処理できます。この投稿では、PLSQL表タイプのコレクションに対して非常に基本的で最も頻繁に使用されるコマンドについて説明します。以下は、OraclePLSQLの例のテーブルタイプです。
まず、PLSQLブロックのdeclareセクションで宣言する必要があります。例を使用した構文は次のとおりです。
OraclePLSQLの例の表タイプ
1。 PLSQL表タイプを宣言する
Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type;によるemp%rowtypeインデックスのテーブルです。
上記のコマンドは、empテーブル行タイプのテーブルタイプany_table_typeを宣言してから、emp_recで初期化します。宣言後、手動で値を割り当てることができます。以下に例を示します。
2。 PLSQL表タイプに値を割り当てる
set serveroutput on; declare Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type; begin emp_rec(1).ename := 'abc'; /* assigning values */ emp_rec(2).ename := 'xyz'; dbms_output.put_line(emp_rec(1).ename); /* accessing values */ dbms_output.put_line(emp_rec(2).ename); end;
PL SQLテーブルはのような配列であるため、上記のように、配列要素番号を指定して値を割り当てる必要があります。以下は、PLSQLテーブルタイプコレクションから削除する方法の例です。
3。 PLSQL表タイプからの要素の削除
set serveroutput on; declare Type any_table_type is table of emp%rowtype index by binary_integer; emp_rec any_table_type; begin emp_rec(1).ename := 'abc'; emp_rec(2).ename := 'xyz'; emp_rec.delete(1); /* will delete first element */ for i in emp_rec.first .. emp_rec.last loop /* loop through the array */ dbms_output.put_line(emp_rec(i).ename); end loop; end;
上記の例では、最初の要素が削除され、2番目の要素のみが印刷されます。上記のブロックを実行すると、出力は次のようになります。
xyz
PL/SQLプロシージャが正常に完了しました。
PL SQL表タイプからすべての要素を削除するには、以下に例を示します。
emp_rec.delete;
4。一括収集を使用したPLSQL表タイプの移入
以下は、empテーブルからデータをフェッチするOracle PL SQLの例のテーブルタイプです。次に、BulkCollectを使用してPLSQLテーブルタイプにデータを入力し、FORALLを使用してempテーブルを更新します。次に例を示します。
set serveroutput on; DECLARE CURSOR c IS SELECT * FROM emp; TYPE any_table_type IS TABLE OF emp%ROWTYPE INDEX BY BINARY_INTEGER; emp_rec any_table_type; BEGIN OPEN c; FETCH c BULK COLLECT INTO emp_rec; CLOSE c; FORALL i IN emp_rec.FIRST .. emp_rec.LAST UPDATE emp SET comm = emp_rec (i).sal * 10 / 100 WHERE empno = emp_rec (i).empno; COMMIT; END;
PL SQLプロシージャ・ツールをチェックして、開発用のスクリプトを生成することもできます。