我的 Oracle 数据库中有一个过程,其中有一个数组作为输出参数。在此过程中,我将所有球队及其积分放入一个数组中。
create or replace package pck_tournament
as
type trranking is record (
position number
, team VARCHAR2(20)
, points number
);
type taranking is table of trranking;
procedure retrieve_ranking (oparray out taranking);
end pck_tournament;
但是当我尝试用 PHP 调用这个过程时,我总是会得到这样的错误:
PLS-00306:调用“RETRIEVE_RANKING”时参数的数量或类型错误
这是我的 PHP 代码的一部分:
$out_arr = array();
$stmt = oci_parse($conn, "BEGIN pck_tournament.retrieve_ranking(:taranking); END;");
oci_bind_array_by_name($stmt,":taranking", $out_arr, 10000, 10000, SQLT_CHR );
oci_execute($stmt);
如果我将 OUT 参数更改为 VARCHAR2 以进行测试,我就能够读取结果。但如果它是一个数组,我就无法让它工作。
所以问题一定是我使用了错误类型的参数来存储我的 OUT 参数?
我搜索了很多网站,但仍然不知道如何进行这项工作。
www说