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 03/12/2007, 14h40   #1
Invité régulier
 
Inscription : mars 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 18
Points : 7
Points : 7
Par défaut IF ( Structure conditionnelle ) MYSQL

Bonjour,

Après qq. recherches sur http://dev.mysql.com/, j'ai vu qu'il était possible de réaliser des structures conditionnelles de ce genre :

Code :
1
2
3
4
5
IF search_condition THEN statement(s)
[ELSEIF search_condition THEN statement(s)]
...
[ELSE statement(s)]
END IF
J'aimerai appliquer en faisant cela :
Code :
IF ( REQUETE ) THEN REQUETE2 END IF
exemple concret :

Code :
IF ( SELECT COUNT(*) FROM MATABLE < 8 ) THEN INSERT INTO MATABLE VALUES ...END IF
J'ai fait plusieurs essais, mais Mysql me dit qu'il y a une erreur.

Je voulais savoir si l'on pouvait effictivement utiliser ces structures conditionnelles pour réaliser ce que je souhaite faire

Merci d'avance
Eric45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 14h44   #2
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
fait plutot ton select count(*) dans une variable et applique ton if sur la variable

Code :
1
2
3
4
5
6
7
8
9
10
11
 
DECLARE v_i INT;
 
SELECT COUNT(*) 
INTO v_i
FROM MATABLE
WHERE tacolonne< 8;
 
IF v_i=XX THEN
     INSERT INTO MATABLE VALUES ...
END IF
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 17h03   #3
Invité régulier
 
Inscription : mars 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 18
Points : 7
Points : 7
Tiens, c'est curieux mais je n'arrive même pas à déclarer une variable locale.

En effet, il y a une erreur dès :
Code :
1
2
3
DECLARE v_i int(11);
 
ERROR 1064 (42000): You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near 'DECLARE v_i int(11)' at line 1
C'est curieux car j'ai Mysql 5 d'installé
Eric45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 17h36   #4
Membre chevronné
 
Avatar de pop_up
 
Inscription : avril 2006
Messages : 833
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 833
Points : 690
Points : 690
tu as declaré ta variable dans une fonction (ou une procedure) ?
pop_up est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 17h54   #5
Membre éclairé
 
Avatar de jota5450
 
Jota Alves
Inscription : janvier 2006
Messages : 263
Détails du profil
Informations personnelles :
Nom : Jota Alves
Âge : 36

Informations forums :
Inscription : janvier 2006
Messages : 263
Points : 303
Points : 303
slt...

d´apres ton message d´erreur:

Citation:
syntax TO USE near 'DECLARE v_i int(11)' at line 1
Tu declare ta var ou? car ca a l´air de ne pas etre dans une procedure, ni dans une function...
jota5450 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 20h57   #6
Invité régulier
 
Inscription : mars 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 18
Points : 7
Points : 7
Effectivement, les choses se passent mieux en mettant le tout dans une procédure. J'avais oublié
Eric45 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 02h06.


 
 
 
 
Partenaires

Hébergement Web