パッケージでは、可変長配列、ネストされたテーブル、および連想配列を定義できます。
使用上の注意
パッケージで定義されているコレクションの型は、システムテーブルに保持されます。 パッケージが削除されると、コレクションの種類も削除されます。
例
パッケージコレクション型とローカルコレクション型の間の変換の次の例を参照してください。
パッケージpkgを作成または交換する
タイプ番号リストは番号のテーブルです;
PROCEDUREプリント (NumberList);
END pkg;
パッケージ本体pkgを作成または交換する
PROCEDURE print (nums NumberList) IS
BEGIN
FOR i IN nums.FIRST .. nums.LAST LOOP
RAISE NOTICE '%' 、nums(i);
END LOOP;
エンド;
エンド;
DECLARE
タイプCharListはVARCHAR(10) のテーブルです;
n1 pkg.NumberList := pkg.NumberList(1,2); -- パッケージコレクションタイプを使用します。
n2 CharList := CharList('3','4'); -- ローカルコレクションタイプを使用します。
BEGIN
pkg.print(n1); -- パッケージコレクション型の変数を渡します。
pkg.print(n2); -- ローカルコレクション型の変数を渡します。 型変換は、要素の型に基づいて実行されます。
エンド;
サンプル結果:
通知: 1
通知: 2
通知: 3
通知: 4
行う
パッケージコレクション型とグローバルコレクション型の間の変換の次の例を参照してください。
-- グローバルコレクションタイプを宣言します。
CREATEまたはREPLACE TYPE NumListは番号のテーブルです。-- 前の例のパッケージプロシージャを使用します。
DECLARE
n NumList := NumList(5,6);
開始
pkg.print(n);
エンド;
サンプル結果:
通知: 5
通知: 6
行う