こんにちは私はPHPからOracleにVARRAYを渡そうとしています。私はOCI8を使用しており、以前はストアドプロシージャの引数としてVARRAYを使用しており、コンパイル時にそれらのVARRAYのタイプが作成されます。したがって、PHP側でコレクションインスタンスを作成するときに、コレクション名を直接指定できます。
元:
$my_coll = oci_new_collection($c, 'MY_ARRAY');
ここで、MY_ARRAYは、Oracleインスタンスで宣言した配列タイプになります。
create or replace type MY_ARRAY as varray(100) of varchar2(20);
したがって、パッケージの外部でそれらを作成すると、型がコンパイルされ、実行中に準備が整います。
パッケージからそれを行うと、エラーが返されます
PHP警告:oci_new_collection()[function.oci-new-collection]:OCI-22303:タイプ""。"my_pack.my_array_type"が見つかりません
私のパッケージヘッダーは次のようになります
create or replace
PACKAGE my_pack
AS
TYPE my_array_type is VARRAY(200) of varchar2(20);
my_arr my_array_type;
function my_func(
in_id number,
in_arr my_array_type
)
return number;
end my_pack;
これで、PHPから呼び出してコレクションのインスタンスを作成するとき、これが私のやり方です。
$my_collection = oci_new_collection($connect,'my_pack.my_array_type');
警告タイプが見つかりません。
私の質問は、パッケージに含まれているvarrayタイプをどのように呼び出す必要があるかということです。package.type_nameとして実行していますが、タイプが見つからないという警告が表示されます。