Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/02/2008, 15h59   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 71
Points : 11
Points : 11
Par défaut appel d'une procédure PL/SQL via PHP

Bonjour,
voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
include ('class_connection_PGM.php');
$query = "DECLARE
		BEGIN
		PCK_FLYSPRAY2.flyspray_create_tache(
		'$ntype',
		'$client',
		'$ncateg',
		'$nlib',
		'$id',
                '$nid');
		EXCEPTION WHEN OTHERS THEN
		RAISE;
		END;
		";
 
$curseur = ora_open($connexion); // Créer un curseur
		IF($curseur) // Si ça créé
		{
			$resultat = ora_parse($curseur, $query);
			$resultat = ora_exec($curseur);
			$a = ora_commit($connexion); // Fait le COMMIT pour valider		    
                        $b = ora_close($curseur); // Ferme le curseur
			include ('class_deconnection_PGM.php');
		}
Je me connecte bien à la base de données.
Quand j'exécute ce script j'ai l'erreur suivante :
Code :
Warning: ora_parse() [FUNCTION.ora-parse]: Ora_Parse failed (ORA-06550: Ligne 1, colonne 8 : PLS-00103: Symbole "" rencontré à la place d'un des symboles suivants : begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> form current cursor -- while processing OCI function OPARSE) in C:\Program Files\EasyPHP 2.0b1\www\last_flyspray\majPGM.php on line 82
La ligne 82 est "$resultat = ora_parse($curseur2, $query);"

L'erreur vient donc de ma requête.

Pourtant quand j'affiche ma requête, que je la copie puis que je la colle dans un SQL navigateur, elle s'exécute normalement.

J'avoue que je n'y comprends rien là.

Quelqu'un peut m'aider.
toine62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 16h15   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Declare suivi directement de Begin fait mal.
When Others Then Raise ne sert à rien.
Pour debugger vous pouvez tester votre bloc PL/SQL Avec SQL*Plus.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 16h16   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 71
Points : 11
Points : 11
Oui mais si je n'ai rien a mettre derrière BEGIN que dois je faire?

De plus, si je teste ma requête dans SQLNAV elle fonctionne!!
toine62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 16h19   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Ne pas metre le "declare". Apprendre le PL/SQL.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 16h20   #5
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 71
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 71
Points : 11
Points : 11
En réduisant ma requête à çà j'ai toujours la même erreur :

Code :
1
2
3
4
5
6
7
8
9
10
$query = "BEGIN
		PCK_FLYSPRAY2.flyspray_create_tache(
		'$ntype',
		'$client',
		'$ncateg',
		'$nlib',
		'$id',
                '$nid');
		END;
		";
toine62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/02/2008, 16h48   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Je ne connaîs pas le PHP.
Peut être l'erreur est due au fait que toute la chaîne de caractères doit être écrit sur une seule ligne. Essaie
Code :
1
2
 
$query = "BEGIN	PCK_FLYSPRAY2.flyspray_create_tache('$ntype','$client','$ncateg','$nlib','$id','$nid'); END;";
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 16h31   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2009
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 17
Points : 11
Points : 11
Laisser le déclare !!! mnitu
Mettre la requéte en une seule ligne
Sujet résolu
goro62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 18h28   #8
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Citation:
Envoyé par goro62 Voir le message
Laisser le déclare !!! mnitu
Je ne pense pas! Tien un exemple trouvé quelque part sur l'internet:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE OR REPLACE procedure
myproc(a IN varchar2, b IN number) AS
begin
INSERT INTO mytable (mydata, myid) VALUES (a, b);
end;
/
<?php
$c = oci_connect('hr', 'hr', '//localhost/XE');
$s = oci_parse($c, "call myproc('mydata', 123)");
oci_execute($s);
?>
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h25.


 
 
 
 
Partenaires

Hébergement Web