У меня есть процедура Oracle
create or replace PROCEDURE PREVISAO_CHEGADA(PONTO IN number, LINHA IN number, ROTA IN number, RETORNO OUT POSICAO_ONIBUS_TAB) IS ...
где параметр out POSICAO_ONIBUS_TAB является массивом POSICAO_ONIBUS
и POSICAO_ONIBUS -
create or replace TYPE POSICAO_ONIBUS AS OBJECT (LOGP_CODIGO NUMBER, VEIC_CODIGO NUMBER, PROX_VIAG VARCHAR2(5), distancia NUMBER);
Мне нужно вызвать эту процедуру с PHP, но я получаю сообщение об ошибке:
oci_execute (): ORA-06550: строка 1, столбец 7: PLS-00306: неверный номер или типы аргументов при вызове 'PREVISAO_CHEGADA' ORA-06550: строка 1, столбец 7: PL / SQL: оператор игнорируется
следует приведенному ниже PHP-коду:
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA=(SID=mydb)))";
$conn = oci_connect("user", "password", $db, 'WE8ISO8859P1');
$sql = 'BEGIN previsao_chegada(:ponto, :linha, :rota, :retornos); END;';
$stmt = oci_parse($conn,$sql);
oci_bind_by_name($stmt,':ponto',$ponto,10);
oci_bind_by_name($stmt,':linha',$linha,10);
oci_bind_by_name($stmt,':rota',$rota,10);
oci_bind_array_by_name($stmt,':retornos',$retornos, 100, 100, SQLT_CHR);
$ponto = 391;
$linha = 280;
$rota = 0;
$retornos = array();
oci_execute($stmt);