Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2725 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Commandes pour executer une procédure sql à partir de php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commandes pour executer une procédure sql à partir de php

n°755835
voleurdeca​rottes
On peut cogner, chef ?
Posté le 08-06-2004 à 09:51:27  profilanswer
 

Comment executer une procédure sql à partir de php ?
 
Merci :jap:

mood
Publicité
Posté le 08-06-2004 à 09:51:27  profilanswer
 

n°755836
gizmo
Posté le 08-06-2004 à 09:52:01  profilanswer
 

en lisant la doc 30 sec?

n°755861
Mara's dad
Yes I can !
Posté le 08-06-2004 à 10:02:16  profilanswer
 

C'est pas en posant plusieurs fois la question que tu trouveras plus vite la réponse...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°755923
voleurdeca​rottes
On peut cogner, chef ?
Posté le 08-06-2004 à 10:30:13  profilanswer
 

Mara's dad a écrit :

C'est pas en posant plusieurs fois la question que tu trouveras plus vite la réponse...


 
Je sais bien! Mais j'ai la poisse ce matin, pour retrouver ce topic j'ai dû faire une recherche de mon pseudo !!! (pourtant je connais bien ce forum!!!)  [:bap2703]  
 
C'est sous Oracle.
 
PS: Je viens de virer le topic en double.


Message édité par voleurdecarottes le 08-06-2004 à 10:31:43
n°755959
Mara's dad
Yes I can !
Posté le 08-06-2004 à 10:54:01  profilanswer
 

Ok, bon, c'est pas super simple, mais en gros voilà un exemple avec OCI8 :

Code :
  1. <?php
  2. $query="BEGIN
  3. demo.ma_proc( 10, 'xxx', :PARAM1, :PARAM2 );
  4. END;"
  5. // Création d'un Statement sur la requête
  6. $stmt = OCIParse($conn, $query);
  7. // Bind des paramètres
  8. OCIBindByName( $stmt, ":PARAM1", &$p1, 50 );
  9. OCIBindByName( $stmt, ":PARAM2", &$p2, 50 );
  10. // Execution de la requête.
  11. $exec_result = OCIExecute( $stmt, OCI_DEFAULT );
  12. // Affichage du résultat
  13. echo "p1 = $p1<br>";
  14. echo "p1 = $p2<br>";
  15. ?>


Voir http://fr2.php.net/manual/fr/funct [...] byname.php


Message édité par Mara's dad le 08-06-2004 à 10:54:37

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°755988
Mara's dad
Yes I can !
Posté le 08-06-2004 à 11:10:45  profilanswer
 

gizmo a écrit :

en lisant la doc 30 sec?


C'est vrai en général, mais là je me souvient avoir galèré tellement la dessus, qu'un bon exemple m'aurrais fait gagner un temps fou en compréhension.
L'API Oracle, je me demande si y'a pire :D ( remarque : je connais pas les MFCs ...)
Et encore, via PHP, c'est assez simple, en C un bind, ça donne :
 
"odefin(&cda, 2, (ub1 *) field_name, (sword) LONG_CHAMP, (sword) SQLT_STR, (sword) -1, (sb2 *) 0, (text *) 0, -1, -1, (ub2 *) 0, (ub2 *) 0)"
 
Sinon, j'ai un autre exemple d'appel de procédure stockée:

Code :
  1. <HTML>
  2. <?php
  3. $time_start = getmicrotime();
  4. $conn = ociLogon("user", "pass", "aliasbd" );
  5. $query="DECLARE
  6. qctx DBMS_XMLquery.ctxType;
  7. BEGIN
  8. qctx := DBMS_XMLquery.newContext('select * from refcontrole');
  9. :result := DBMS_XMLquery.getXML(qctx);
  10. DBMS_XMLquery.closeContext(qctx);
  11. EXCEPTION when others then
  12.  :ERROR := 1;
  13.  :SQLCODE := SQLCODE;
  14.  :SQLERRM := SUBSTR(SQLERRM,0,300);
  15. END;";
  16. $stmt = OCIParse($conn, $query);
  17. /* Output parameters */
  18.              
  19. OCIBindByName($stmt,":ERROR",&$insert_error,32);
  20. OCIBindByName($stmt,":SQLCODE",&$SQLCODE,32);
  21. OCIBindByName($stmt,":SQLERRM",&$SQLERRM,300);
  22. $result = OCINewDescriptor($conn, OCI_D_LOB);
  23. OCIBindByName($stmt,":result",&$result,-1,OCI_B_CLOB);
  24. $exec_result = OCIExecute($stmt,OCI_DEFAULT);
  25. $x = $result->Load();
  26. echo( "$x" );
  27. echo( "<HR>xxxxxxxxxxx" . $result->writetofile("refcontrole.txt" ) . "xxxxxx<br>\n" );
  28. ociLogOff($conn);
  29. $time = getmicrotime() - $time_start;
  30. printf("<HR><center>Page générée en %0.2f s</center>",$time);
  31. echo( "<HR>" );
  32. echo( get_class($result) );
  33. echo( "<HR>METHOD:<BR>\n" );
  34. $class_methods = get_class_methods(get_class($result));
  35. foreach ($class_methods as $method_name) {
  36.     echo( "$method_name<BR>\n" );
  37. }
  38. echo( "<HR>PROPERTIES:<BR>\n" );
  39. $class_vars = get_class_vars(get_class($result));
  40. foreach ($class_vars as $name => $value) {
  41.     echo( "$name : $value<BR>\n" );
  42. }
  43. function getmicrotime()
  44. {
  45.     list($usec, $sec) = explode(" ",microtime());
  46.     return ((float)$usec + (float)$sec);
  47. }
  48. ?>
  49. </HTML>


 
Ca ne marche que si XSU est installé. Ca retourne le résultat de la requête (ici : 'select * from refcontrole') en XML.
 
C'est buggé à mort et ça rame tellement, que j'ai fini par générer le XML en PHP..., mais c'est un autre exemple d'appel de procédure Oracle en PHP qui retourne un CLOB.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°756942
voleurdeca​rottes
On peut cogner, chef ?
Posté le 08-06-2004 à 17:59:44  profilanswer
 

Merci beaucoup pour ce code  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Commandes pour executer une procédure sql à partir de php

 

Sujets relatifs
curseur et procedureApeller un jar a partir d'un autre jar
ouvrir une nouvelle fenêtre dos à partir d'une fenetre dos ?je n'arrive plus à exécuter un java
java et commandes du système[VB, DTS] lancement d'un lot DTS à partir d'un script VB
[SQLServer]Comment avoir une sous chaine a partir d'un caracteregénérer un diagramme de classe a partir du code source
Initialisation des labels à partir d'un fichier excelMise à jour de champs à partir de liste déroulante...?
Plus de sujets relatifs à : Commandes pour executer une procédure sql à partir de php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR