Dopiero zaczynam swoją przygodę z Oracle i niestety nie potrafię wywołać następującej procedury:
<?php
$polaczenie = oci_connect("xxx", "xxx", "xxx");
if (!$polaczenie) {
$e = oci_error();
}
else{
echo 'Połączenie ok.<br>'; $curs = oci_new_cursor($polaczenie);
$query='begin
ehandel_pack.search(page_nr => :page_nr,
results_per_page => :results_per_page,
schemat => :schemat,
schematmag => :schematmag,
prod => :prod,
prodg => :prodg,
asort => :asort,
text => :text,
sym => :sym,
sym_proc => :sym_proc,
sort_kol => :sort_kol,
sort_kier => :sort_kier,
kod_roli => :kod_roli,
schematmagmc => :schematmagmc,
schematkto => :schematkto,
kodkth => :kodkth,
isownproductfiltr => :isownproductfiltr,
ref1 => :ref1,
total => :total);
end;';
$stmt = oci_parse($polaczenie, $query);
$_page_nr=1;
$_results_per_page = 100;
$_schemat='comz2012';
$_schematmag='z012012';
$_prod='';
$_prodg='';
$_asort='';
$_text='';
$_sym='';
$_sym_proc='';
$_sort_kol='';
$_sort_kier='';
$_kod_roli='';
$_schematmagmc='z012012';
$_schematkto='comz2012';
$_kodkth='';
$_isownproductfiltr=0;
oci_bind_by_name($stmt, ':page_nr', $_page_nr);
oci_bind_by_name($stmt, ':results_per_page', $_results_per_page);
oci_bind_by_name($stmt, ':schemat', $_schemat);
oci_bind_by_name($stmt, ':schematmag', $_schematmag);
oci_bind_by_name($stmt, ':prod', $_prod);
oci_bind_by_name($stmt, ':prodg', $_prodg);
oci_bind_by_name($stmt, ':asort', $_asort);
oci_bind_by_name($stmt, ':text', $_text);
oci_bind_by_name($stmt, ':sym', $_sym);
oci_bind_by_name($stmt, ':sym_proc', $_sym_proc);
oci_bind_by_name($stmt, ':sort_kol', $_sort_kol);
oci_bind_by_name($stmt, ':sort_kier', $_sort_kier);
oci_bind_by_name($stmt, ':kod_roli', $_kod_roli);
oci_bind_by_name($stmt, ':schematmagmc', $_schematmagmc);
oci_bind_by_name($stmt, ':schematkto', $_schematkto);
oci_bind_by_name($stmt, ':kodkth', $_kodkth);
oci_bind_by_name($stmt, ':isownproductfiltr', $_isownproductfiltr);
oci_define_by_name($stmt, 'ref1', $_ref1);
oci_define_by_name($stmt, 'total', $_total);
oci_execute($stmt);
oci_execute($curs);
}
?>
Dodam tylko że ref1 to zwracany kursor. a total to całkowita liczba rekordów. Pozostałe to dane wejściowe. W jaki sposób wywołać daną procedurę bez błędów? tak abym mógł działać na otrzymanym wskaźniku.
Aktualnie php zwraca komunikat:
Warning: oci_execute() [function.oci-execute]: ORA-01008: nie wszystkie zmienne zostały zwišzane in D:\xampp\htdocs\sklep\polaczenie.php on line 73
Jednak sam byłem w stanie rozwiązać ten problem. Temat do zamknięcia/usunięcia.
Dla potomnych:
oci_bind_by_name($stmt, ':ref1', $curs, -1, SQLT_RSET);
oci_bind_by_name($stmt, ':total', $total);
Ten post edytował ghost1511 23.10.2012, 09:40:26