для проекта базы данных Мне нужно реализовать хранимую процедуру. В моем случае я пытаюсь получить содержимое определенного порядка. Моя хранимая процедура выглядит следующим образом:Как вернуть таблицу из хранимой процедуры в PHP
create or replace PROCEDURE bestellinhalt (sbestellnr IN integer, rtable OUT sys_refcursor) IS
BEGIN
OPEN rtable for SELECT beinhaltet.bestellnr,artikel.artikelname, artikel.artikelnr, beinhaltet.anzahl, artikel.preis FROM ARTIKEL, BEINHALTET WHERE ARTIKEL.ARTIKELNR = BEINHALTET.ARTIKELNR AND BEINHALTET.BESTELLNR = sbestellnr;
END;
И в SQL Developer также возвращает нужное значение в виде таблицы:
Но теперь я не имею ни малейшего представления, как я могу получить эту таблицу на моей странице PHP. Это, как я попробовал:
<?php
//Handle Stored Procedure
if (isset($_GET['bestellnr']))
{
//Call Stored Procedure
$bestellnr = intval($_GET['bestellnr']);
$sproc = oci_parse($conn, 'begin bestellinhalt(:in, :rtable); end;');
$returntable = oci_new_collection($conn, 'RTABLE');
//Bind variables, p1=input (nachname), p2=output (abtnr)
oci_bind_by_name($sproc, ':in', $bestellnr);
oci_bind_by_name($sproc, ':rtable', $returntable);
oci_execute($sproc);
$conn_err=oci_error($conn);
$proc_err=oci_error($sproc);
//If there have been no Connection or Database errors, print department
if(!$conn_err && !$proc_err){
echo("Erfolg"); // prints OUT parameter of stored procedure
}
else{
//Print potential errors and warning
echo("Fehler!");
print($conn_err);
print_r($proc_err);
}
}
// clean up connections
oci_free_statement($sproc);
oci_close($conn);
?>
I Allways заканчиваясь со следующей ошибкой:
PLS-00306: wrong number or types of arguments in call to 'BESTELLINHALT' ORA-06550
Но процедура ожидает только один вход, так что сейчас я немного запутался. Другая ошибка «RTABLE» не найден в index.php»Я никогда не использовал PHP, прежде чем мой подход основан на этом форуме въездной @oracle:...
https://community.oracle.com/thread/617612?tstart=0
Спасибо за ответ, я буду попробуйте реализовать его, как описано на странице. – Cracksoldier
Спасибо за вашу помощь, теперь он работает, ты мой герой. – Cracksoldier