Dopiero zaczynam swoją przygodę z Oracle i niestety nie potrafię wywołać następującej procedury:
  1. <?php
  2. $polaczenie = oci_connect("xxx", "xxx", "xxx");
  3. if (!$polaczenie) {
  4. $e = oci_error();
  5. trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
  6. }
  7. else{
  8. echo 'Połączenie ok.<br>';
  9. $curs = oci_new_cursor($polaczenie);
  10. $query='begin
  11. ehandel_pack.search(page_nr => :page_nr,
  12. results_per_page => :results_per_page,
  13. schemat => :schemat,
  14. schematmag => :schematmag,
  15. prod => :prod,
  16. prodg => :prodg,
  17. asort => :asort,
  18. text => :text,
  19. sym => :sym,
  20. sym_proc => :sym_proc,
  21. sort_kol => :sort_kol,
  22. sort_kier => :sort_kier,
  23. kod_roli => :kod_roli,
  24. schematmagmc => :schematmagmc,
  25. schematkto => :schematkto,
  26. kodkth => :kodkth,
  27. isownproductfiltr => :isownproductfiltr,
  28. ref1 => :ref1,
  29. total => :total);
  30. end;';
  31.  
  32. $stmt = oci_parse($polaczenie, $query);
  33.  
  34. $_page_nr=1;
  35. $_results_per_page = 100;
  36. $_schemat='comz2012';
  37. $_schematmag='z012012';
  38. $_prod='';
  39. $_prodg='';
  40. $_asort='';
  41. $_text='';
  42. $_sym='';
  43. $_sym_proc='';
  44. $_sort_kol='';
  45. $_sort_kier='';
  46. $_kod_roli='';
  47. $_schematmagmc='z012012';
  48. $_schematkto='comz2012';
  49. $_kodkth='';
  50. $_isownproductfiltr=0;
  51.  
  52. oci_bind_by_name($stmt, ':page_nr', $_page_nr);
  53. oci_bind_by_name($stmt, ':results_per_page', $_results_per_page);
  54. oci_bind_by_name($stmt, ':schemat', $_schemat);
  55. oci_bind_by_name($stmt, ':schematmag', $_schematmag);
  56. oci_bind_by_name($stmt, ':prod', $_prod);
  57. oci_bind_by_name($stmt, ':prodg', $_prodg);
  58. oci_bind_by_name($stmt, ':asort', $_asort);
  59. oci_bind_by_name($stmt, ':text', $_text);
  60. oci_bind_by_name($stmt, ':sym', $_sym);
  61. oci_bind_by_name($stmt, ':sym_proc', $_sym_proc);
  62. oci_bind_by_name($stmt, ':sort_kol', $_sort_kol);
  63. oci_bind_by_name($stmt, ':sort_kier', $_sort_kier);
  64. oci_bind_by_name($stmt, ':kod_roli', $_kod_roli);
  65. oci_bind_by_name($stmt, ':schematmagmc', $_schematmagmc);
  66. oci_bind_by_name($stmt, ':schematkto', $_schematkto);
  67. oci_bind_by_name($stmt, ':kodkth', $_kodkth);
  68. oci_bind_by_name($stmt, ':isownproductfiltr', $_isownproductfiltr);
  69.  
  70. oci_define_by_name($stmt, 'ref1', $_ref1);
  71. oci_define_by_name($stmt, 'total', $_total);
  72.  
  73. oci_execute($stmt);
  74. oci_execute($curs);
  75.  
  76. }
  77. ?>


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:
  1. 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:
  1. oci_bind_by_name($stmt, ':ref1', $curs, -1, SQLT_RSET);
  2. oci_bind_by_name($stmt, ':total', $total);