Login mot de passe
Articles
Actualités : PHP4WD (5.0.0.0)
Posté par Firetox le 22/1/2007 11:20:00 (2195 lectures)

voici enfin la version 5
qui permet l'appel et le traitement des procedures stockées sous oracle et
SQLserver les scripts connect et php4wd ont ete modifiés et un peu optimisés surtout sur oracle.

nous avons fait les tests pour oracle sur un mobile et ca marche tres bien
sous SQLServeur j'ai fait les tests sur un SQLServer Express edition 2005.

PHP4wd donc permet de passer des parametre en IN INOUT ou OUT a des procedures et peut aussi recuperer le recordSet si un est renvoyé. les Deux exemples suivant montrent cet etat de fait. pour l'instant 1 seul recordSet peut etre recuperé par procedures.

attention a bien faire le closeBind avec le MySQLFerme.

Exemple Appel de procedure sous oracle :
Citation :


i est un entier
v_res est une chaîne

// procedure avec 1 parametre en entree et 3 en sortie

CONVSQL:mysqlCloseBind()
CONVSQL:MySQLDefBind(1,"TESTPIN",CONVSQL:PS_VARIN,CONVSQL:PS_TYPEINTEGER,20)
CONVSQL:MySQLDefBind(2,"TESTCHA",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPECHAINE)
CONVSQL:MySQLDefBind(3,"TESTINT",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPEINTEGER)
CONVSQL:MySQLDefBind(4,"TESTDAT",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPECHAINE)
CONVSQL:MySQLDefBind(5,"TESTDBL",CONVSQL:PS_VAROUT,CONVSQL:PS_TYPEDOUBLE)

SI
CONVSQL:MySQLExec("TESTPS(:TESTPIN,:TESTCHA,:TESTINT,:TESTDAT,:TESTDBL)",1)
ALORS

// recuperation des parametres envoyés
POUR i=2 A 5
CONVSQL:mySQLGetBind(i,v_res)
Trace(v_res)
FIN


// recuperation du recordSet renvoyé par la procedure si il y en a un
Citation :

CONVSQL:mySQLPremier(1)
TANTQUE PAS CONVSQL:mySQLendehors
Trace(CONVSQL:MySQLLitLigne(1))
CONVSQL:mySQLSuivant(1)
FIN
FIN
CONVSQL:mysqlferme(1)
CONVSQL:mysqlCloseBind()


exemple sous oracle d'appel a une fonction :
Citation :

CONVSQL:mysqlCloseBind()
SI CONVSQL:MySQLExec("SELECT FCTHELLOWORLD() FROM DUAL",1) ALORS
CONVSQL:mySQLPremier(1)
TANTQUE PAS CONVSQL:mySQLendehors
Trace(CONVSQL:MySQLLitLigne(1))
CONVSQL:mySQLSuivant(1)
FIN
FIN
CONVSQL:mysqlferme(1)


Exemple d'appel d'une procedue sous SQLServer :
Citation :

v_reponse est une chaîne
i est un entier

CONVSQL:MySQLCloseBind()

//premier parametre :@IN1
CONVSQL:mySQLDefBind(1,"@sval",CONVSQL:PS_VARINOUT,CONVSQL:PS_TYPECHAINE,"Franck")

// deuxieme parametre : en entree / sortieentier
CONVSQL:mySQLDefBind(2,"@intval",CONVSQL:PS_VARINOUT,CONVSQL:PS_TYPEINTEGER,50)

// troisiem eparametre en entee sortie maischaine
CONVSQL:mySQLDefBind(3,"@floatval",CONVSQL:PS_VARINOUT,CONVSQL:PS_TYPEDOUBLE,2.1416)

v_req est une chaîne

v_req += "TestPSSQLServer"

IF(CONVSQL:MySQLExecPS(v_req,1)) THEN

// recuperation des parametres envoyés
CONVSQL:mySQLGetBind(1,v_reponse)
Trace(v_reponse)
CONVSQL:mySQLGetBind(2,v_reponse)
Trace(v_reponse)
CONVSQL:mySQLGetBind(3,v_reponse)
Trace(v_reponse)

// recuperation du recordSet renvoyé par la procedure si il y en a un
CONVSQL:mySQLPremier(1)
TANTQUE PAS CONVSQL:mySQLendehors
Trace(CONVSQL:MySQLLitLigne(1))
CONVSQL:mySQLSuivant(1)
FIN
ELSE
Erreur(CONVSQL:mySQLGetErrorMessage())
END
CONVSQL:MySQLCloseBind()
CONVSQL:mySQLFerme(1)


Voila le forum est la si vous avez des problemes. n'hesitez pas nous remonter les problemes que vous rencontrez.

Format imprimable Envoyer cet article à un ami