У меня есть процедура в моей 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?
Я искал много сайтов, но все еще не знаю, как заставить это работать.