Mara's dad Yes I can ! |
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 ( 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 :
- <HTML>
- <?php
- $time_start = getmicrotime();
- $conn = ociLogon("user", "pass", "aliasbd" );
- $query="DECLARE
- qctx DBMS_XMLquery.ctxType;
- BEGIN
- qctx := DBMS_XMLquery.newContext('select * from refcontrole');
- :result := DBMS_XMLquery.getXML(qctx);
- DBMS_XMLquery.closeContext(qctx);
- EXCEPTION when others then
- :ERROR := 1;
- :SQLCODE := SQLCODE;
- :SQLERRM := SUBSTR(SQLERRM,0,300);
- END;";
- $stmt = OCIParse($conn, $query);
- /* Output parameters */
-
- OCIBindByName($stmt,":ERROR",&$insert_error,32);
- OCIBindByName($stmt,":SQLCODE",&$SQLCODE,32);
- OCIBindByName($stmt,":SQLERRM",&$SQLERRM,300);
- $result = OCINewDescriptor($conn, OCI_D_LOB);
- OCIBindByName($stmt,":result",&$result,-1,OCI_B_CLOB);
- $exec_result = OCIExecute($stmt,OCI_DEFAULT);
- $x = $result->Load();
- echo( "$x" );
- echo( "<HR>xxxxxxxxxxx" . $result->writetofile("refcontrole.txt" ) . "xxxxxx<br>\n" );
- ociLogOff($conn);
- $time = getmicrotime() - $time_start;
- printf("<HR><center>Page générée en %0.2f s</center>",$time);
- echo( "<HR>" );
- echo( get_class($result) );
- echo( "<HR>METHOD:<BR>\n" );
- $class_methods = get_class_methods(get_class($result));
- foreach ($class_methods as $method_name) {
- echo( "$method_name<BR>\n" );
- }
- echo( "<HR>PROPERTIES:<BR>\n" );
- $class_vars = get_class_vars(get_class($result));
- foreach ($class_vars as $name => $value) {
- echo( "$name : $value<BR>\n" );
- }
- function getmicrotime()
- {
- list($usec, $sec) = explode(" ",microtime());
- return ((float)$usec + (float)$sec);
- }
- ?>
- </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é.
|