您好我正在尝试将可变数组从 PHP 传递到 Oracle。我正在使用 OCI8,并且之前曾将可变数组用作存储过程中的参数,并且在编译时创建了这些可变数组的类型。所以在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: type ""."my_pack.my_array_type" not found
我的包头看起来像这样
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 的形式执行此操作,但我收到了提示未找到类型的警告。