Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wywołanie funkcji w PHP, wywołanie funkcji pl/sql z php
polnik@studio
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 1.12.2005

Ostrzeżenie: (0%)
-----


Mam oto taką funkcję :

  1. FUNCTION ekp_api_intranet.limit_pozostaly(
  2. p_prc_id NUMBER, --identyfikator pracownika
  3. p_rda_id NUMBER, --identyfikator rodzaju absencji
  4. p_dzien DATE, --dzień na który sprawdzamy wymiar
  5. po_godziny OUT NUMBER, --zwracana ilość godzin pozostałych do wykorzystania
  6. po_dni OUT NUMBER, --zwracana ilość dni pozostałych do wykorzystania
  7. po_blad OUT VARCHAR2 --zwracany opis błędu, w przypadku niepowodzenia
  8. )
  9. RETURN NUMBER;


i chciałbym aby można było ją wywołać w php

robie coś takiego :
  1. <?php
  2.  
  3. $cmdstr = "SELECT ekp_api_intranet.limit_pozostaly(:p_prc_id, :p_rda_id , :p_dzien) v_godziny FROM dual";
  4. echo "Connection is " . $db_conn;
  5. echo '<br>';
  6.  
  7. $stmt = OCIParse($db_conn, $cmdstr) or die ('Can not parse query');
  8.  
  9. OCIBindByName($stmt,":p_prc_id", $pracownik_spr, 200) or die ('Can not bind variable');
  10. OCIBindByName($stmt,":p_rda_id", $rodzaj_urlopu_spr, 200) or die ('Can not bind variable');
  11. OCIBindByName($stmt,":p_dzien", $data_teraz, 200) or die ('Can not bind variable');
  12.  
  13.  OCIExecute($stmt) or die ('Can not Execute statment');
  14.  
  15. while (ocifetch($stmt)){ $_friends=ociresult($stmt,"v_godziny"); }
  16.  
  17. ?>


niestety otrzymuję komunikat :

Cytat
Warning: ociexecute(): OCIStmtExecute: ORA-06553: PLS-306: wrong number or types of arguments in call to 'LIMIT_POZOSTALY'


w czym może być probem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Proszę o pomoc

pozdrawiam Krzysiek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
polnik@studio
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 1.12.2005

Ostrzeżenie: (0%)
-----


teraz po wykonaniu tego :

  1. <?php
  2.  
  3. $cmdstr = "SELECT ekp_api_intranet.limit_pozostaly(:p_prc_id, :p_rda_id , :p_dzien, :po_godziny , :po_dni, :po_blad) FROM dual";
  4. echo "Connection is " . $db_conn;
  5. echo '<br>';
  6.  
  7. $stmt = OCIParse($db_conn, $cmdstr) or die ('Can not parse query');
  8.  
  9. OCIBindByName($stmt,":p_prc_id", $pracownik_spr, 200) or die ('Can not bind variable');
  10. OCIBindByName($stmt,":p_rda_id", $rodzaj_urlopu_spr, 200) or die ('Can not bind variable');
  11. OCIBindByName($stmt,":p_dzien", $data_teraz, 200) or die ('Can not bind variable');
  12.  
  13. OCIBindByName($stmt,"po_godziny", $wynik1, 200) or die ('Can not bind variable');
  14. OCIBindByName($stmt,"po_dni", $wynik2, 200) or die ('Can not bind variable');
  15. OCIBindByName($stmt,"po_blad", $wynik3, 4000) or die ('Can not bind variable');
  16.  
  17. OCIExecute($stmt) or die ('Can not Execute statment');
  18.  
  19. ?>


zwraca mi komunikat :

Cytat
Warning: ociexecute(): OCIStmtExecute: ORA-06572: Function LIMIT_POZOSTALY has out arguments



(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

pozdrawiam serdecznie Krzysiek


EDIT :

już sobie poradziłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

dla zainteresowanych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2.  
  3. $s = OCIParse($db_conn, "begin :result := ekp_api_intranet.limit_pozostaly(:p_prc_id, :p_rda_id , to_date(:p_dzien,'ddmmyyyy'), :po_godziny, :po_dni, :po_blad); end;");
  4. OCIBindByName($s, ":p_prc_id", $in_var);
  5. OCIBindByName($s, ":p_rda_id", $in_var2);
  6. OCIBindByName($s, ":p_dzien", $data_sprawdzenia);
  7. OCIBindByName($s, ":po_godziny", $out_var1, 50); // 50 długość zwracanej danej
  8. OCIBindByName($s, ":po_dni", $out_var2, 50); // 50 długość zwracanej danej
  9. OCIBindByName($s, ":po_blad", $out_var3, 50); // 50 długość zwracanej danej
  10. OCIBindByName($s, ":result", $out_var4, 4000); // 4000 długość zwracanej danej
  11.  
  12. OCIExecute($s, OCI_DEFAULT);
  13. echo "Ilość godzin: " . $out_var1 ."<BR>";
  14. echo "Ilość dni: " . $out_var2 ."<BR>";
  15. echo "Błąd: " . $out_var3 ."<BR>";
  16.  
  17. ?>


pozdrawiam Krzysiek

Ten post edytował polnik@studio 10.12.2005, 13:16:45
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 03:28