procédure PLSQL et php

Invité
Invité n'ayant pas de compte PHPfrance

14 avr. 2006, 12:01

bonjour

j'ai une procédure stock sue une basse oracle comment je peux l'excute avec php (la syntaxe exact),
Comment faire pour recuperer les valeurs renvoyées par la procédure ?

D'avance je vous remercie pour votre aide.

Invité
Invité n'ayant pas de compte PHPfrance

18 avr. 2006, 11:21

:( :( :( :( :( :( :( :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:
help me plz
:cry: :cry: :cry:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 avr. 2006, 11:24

Tu as fais des essais ? Cherché dans la doc ?
Tu as déjà exécuté et traité une requête simple ?

=> http://fr.php.net/manual/fr/ref.oci8.php

C'est peut-être déjà un point de départ...

Invité
Invité n'ayant pas de compte PHPfrance

18 avr. 2006, 13:47

voila mon code mais j'ai une erreure

Code : Tout sélectionner

Warning: ora_bind(): supplied argument is not a valid Oracle-Cursor resource in c:\program files\easyphp1-8\www\code.php on line 12 Warning: ora_bind(): supplied argument is not a valid Oracle-Cursor resource in c:\program files\easyphp1-8\www\code.php on line 13 Warning: ora_exec(): supplied argument is not a valid Oracle-Cursor resource in c:\program files\easyphp1-8\www\code.php on line 18
voila le code:*
<? 
include "connect.php"
$cursor = Ora_Open ($ora_conn);
	ora_commitoff($ora_conn);
$cursor=ora_parse($cursor, "begin SIH_CODE128(:var1,:varchar2); end;");
	$var1 ='213295';		
	//line12//   ora_bind($cursor, "var1", ":var1", 32, 1);
	//line13 //  ora_bind($cursor, "varchar2", ":varchar2", 32, 2);
$okdnr = "chainecoder";
ora_exec($cursor);

print "okdnr is $okdnr";

?>

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 avr. 2006, 13:53

Je n'ai jamais utilisé Oracle avec PHP donc je ne sais pas s'il y a des particularités

Mais bon là ça dit "curseur invalide", donc ilfaudrait voir si le curseur a bien été ouvert, affiche les erreurs Oracle.

Invité
Invité n'ayant pas de compte PHPfrance

18 avr. 2006, 14:27

le curseur a bien été ouvert en plus quand j'ai fait
 	echo($cursor);
voia ce que ca donne

Code : Tout sélectionner

Resource id #3

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 avr. 2006, 14:30

Alors je ne sais pas je ne connais pas le code PHP ni les particularités liées à Oracle donc je ne peux pas t'aider

Mais j'essaierais comment d'afficher les erreurs après chaque fonction Oracle, on ne sait jamais
ça ne peut pas faire de mal en tout cas ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 avr. 2006, 14:45

Je ne connais pas bien les procédures stockées, mais dans ton ora_parse je pense qu'il n'est pas judicieux d'utiliser "varchar2" qui est un mot clé oracle pour les types de données comme variable...

Invité
Invité n'ayant pas de compte PHPfrance

18 avr. 2006, 14:51

voila le code sur le quel je me suis bassé


<?php
 
// Changed connection details to suit my environment
$connection = ora_logon("scott@MYDB", "tiger");
$cursor = ora_open($connection);
ora_commitoff($connection);
 
// Changed schema to SCOTT to match who I'd created the procedure as
$cu=ora_parse($cursor, "begin SCOTT.kunde_create ( :Sta_nameD, :Sta_name2D, :Sta_kugruD, :ianredeD, :Sta_straD, :Sta_landD, :Sta_plzD, :Sta_ortD, :Sta_ortsteilD, :Sta_telD, :Sta_mailD, :Sta_faxD, :Sta_tel2D, :Sta_anruD, :Sta_zusD, :Sta_zus2D ,:okdnr); end;");
 
// Allocated the IN parameter variables
$Sta_nameD      = 'a';
$Sta_name2D     = 'a';
$ianredeD       = 1;
$Sta_straD      = 'a';
$Sta_landD      = 'a';
$Sta_plzD       = 'a';
$Sta_ortD       = 'a';
$Sta_ortsteilD  = 'a';
$Sta_telD       = 'a';
$Sta_mailD      = 'a';
$Sta_faxD       = 'a';
$Sta_tel2D      = 'a';
$Sta_anruD      = 'a';
$Sta_zusD       = 'a';
$Sta_zus2D      = 'a';
$Sta_kugruD     = 'a';
 
// Changed ora_bind syntax to match
// http://www.php.net/manual/en/function.ora-bind.php
 
ora_bind($cursor, "Sta_nameD", ":Sta_nameD", 32, 1);
ora_bind($cursor, "Sta_name2D", ":Sta_name2D", 32, 1);
 
// Change ianredeD type to 2 to match procedure definition
ora_bind($cursor, "ianredeD", ":ianredeD", 32, 2);
 
ora_bind($cursor, "Sta_straD", ":Sta_straD", 32, 1);
ora_bind($cursor, "Sta_landD", ":Sta_landD", 32, 1);
ora_bind($cursor, "Sta_plzD", ":Sta_plzD", 32, 1);
ora_bind($cursor, "Sta_ortD", ":Sta_ortD", 32, 1);
ora_bind($cursor, "Sta_ortsteilD", ":Sta_ortsteilD", 32, 1);
ora_bind($cursor, "Sta_telD", ":Sta_telD", 32, 1);
ora_bind($cursor, "Sta_mailD", ":Sta_mailD", 32, 1);
ora_bind($cursor, "Sta_faxD", ":Sta_faxD", 32, 1);
ora_bind($cursor, "Sta_tel2D", ":Sta_tel2D", 32, 1);
ora_bind($cursor, "Sta_anruD", ":Sta_anruD", 32, 1);
ora_bind($cursor, "Sta_zusD", ":Sta_zusD", 32, 1);
ora_bind($cursor, "Sta_zus2D", ":Sta_zus2D", 32, 1);
 
// Changed okdnr type to 1 to match procedure definition
ora_bind($cursor, "okdnr", ":okdnr", 32, 1);
 
// Bound missing parameter
ora_bind($cursor, "Sta_kugruD", ":Sta_kugruD", 32, 1);
 
// Preallocated the output variable - I'm not sure why this is
// necessary nor what size is needed.
// When this line is commented out I get:
//   Warning: Can't find variable for parameter in test01.php on line XX
$okdnr = "a";
 
ora_exec($cursor);
 
print "okdnr is $okdnr";
 
?>