Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 01/05/2008, 16h01   #1
Membre du Club
 
Homme
Inscription : janvier 2008
Messages : 240
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 240
Points : 58
Points : 58
Par défaut Ou enregistrer une procédure stockée ?

Bonjour,

Petite question bête ...... Où enregistréer une procedure stokée ?

Par exemple :
Code :
1
2
3
4
CREATE PROCEDURE ma_procedure (IN nombre varchar(20), OUT result bigint)
label BEGIN
SELECT nombre*nombre INTO result;
END label|
Ou dois-e enregistrer cette procédure ? (Via requete sql dans phpMyAdmin ? ??)

Et enfin ou et comment l'appeller via CALL ma_procedure(41,@mon_resultat) ?
(Dans mon script PHP ou où ??) ?

Merci pour votre aide ^^ c'est la première fois que j'utilise ces procédures
popy67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 18h35   #2
Nouveau Membre du Club
 
Inscription : avril 2008
Messages : 24
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2008
Messages : 24
Points : 25
Points : 25
Bonsoir

Citation:
Ou dois-e enregistrer cette procédure ? (Via requete sql dans phpMyAdmin ? ??)
Tout a fait. Petite précision la procédure doit se trouver dans la base qui contient la ou les tables sur lesquelles porte ta procédure.

Pour la lancer depuis un script php tu l'execute comme n'importe quel autre requête. Tu peu aussi la lancer directement depuis PhpMyAdmin dans la partie sql pour la tester.
rewsna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 19h03   #3
Membre du Club
 
Homme
Inscription : janvier 2008
Messages : 240
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27

Informations forums :
Inscription : janvier 2008
Messages : 240
Points : 58
Points : 58
Ben oui mais alors je ne comprends pas.

J'ai une table article dans laquelle il y a un attribut prix; si je fais la chose suivante :

Code :
SELECT prix FROM article
on me renvoi un tableau contenant les prix; si je veux enregistrer une procédure stockée effectuant l'action je fais :

Code :
1
2
3
4
CREATE PROCEDURE les_prix(out result FLOAT)
BEGIN
SELECT prix FROM article INTO result;
END|

et la on me répond erreur de syntaxe à la ligne 3 ?

Où est mon erreur ?
Code :
1
2
3
4
5
 
CREATE PROCEDURE les_prix(out result FLOAT)
label BEGIN
SELECT prix FROM article INTO result;
END label|
popy67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2008, 22h52   #4
Nouveau Membre du Club
 
Inscription : avril 2008
Messages : 24
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2008
Messages : 24
Points : 25
Points : 25
Il faut indiquer a Mysql que la fin de la procédure est atteinte au carractère | et non ;

Pour cela, il faut utiliser l'ordre delimiter
Ta procédure devrait donc ressembler à ca.

Code :
1
2
3
4
5
6
delimiter | 
CREATE PROCEDURE les_prix(out result FLOAT)
BEGIN
SELECT prix FROM article INTO result;
END|
delimiter ;
rewsna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2008, 12h26   #5
Expert Confirmé
 
Avatar de Alain Defrance
 
Homme Alain DEFRANCE
Project Lead
Inscription : août 2007
Messages : 1 993
Détails du profil
Informations personnelles :
Nom : Homme Alain DEFRANCE
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Project Lead

Informations forums :
Inscription : août 2007
Messages : 1 993
Points : 2 919
Points : 2 919
Envoyer un message via MSN à Alain Defrance Envoyer un message via Skype™ à Alain Defrance
Attention au délimiteur avec PhpMyAdmin.
Le mot clé DELIMITER n'est pas employé et il est nécessaire de redéfinir un délimiteur pour pas que le SGBD s'embrouille.
Sur le popup permettant d'exécuter la requête il y a un champ ou l'on peut saisir le délimiteur.
Dans ton cas utilise | comme délimiteur.

Ta procédure stocké étant :

Code :
1
2
3
4
CREATE PROCEDURE les_prix(out result FLOAT)
BEGIN
SELECT prix FROM article INTO result;
END|
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com
Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
Project Lead eXo Social
Java Black Belt - Java Black Belt Coach
Alain Defrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2008, 16h59   #6
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
En fait, quand la procédure ne comprend qu'une seule requête, le BEGIN... END est facultatif, ce qui évite tout le bins sur le délimiteur.

Code :
1
2
CREATE PROCEDURE les_prix(out result FLOAT)
SELECT prix FROM article INTO result;
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h17.


 
 
 
 
Partenaires

Hébergement Web