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 13/07/2005, 13h09   #1
Nouveau Membre du Club
 
Inscription : juin 2004
Messages : 76
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 76
Points : 29
Points : 29
Par défaut [mySQL] Newbie : Utilisation de CASE

Bonjour,
habitué au language transacSQL de MS, je me trouve un peu depourvu devant la 'faiblesse' (???) de mySQL sur ce point.
J'aimerais faire ceci :

Dans une table IDS contenant 2 champs : 'Nom' et 'DernierIdUtilise', utilisée pour conserver les derniers IDS utilisés (genre compteur auto), je voudrais que la procedure gère le fait que le record n'existe pas (dans ce cas je le crèe) et aussi si le champ 'DernierIdUtilise' est null (dans ce cas je l'initialise à 1.

Voila le code que j'ai pondu, mais j'obtiens des erreurs.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
START TRANSACTION;
 
SET @A := -1;
SELECT @A := IF(DernierIdUtilise IS NULL ,0 ,DernierIdUtilise) FROM Ids WHERE Nom = 'Managers';
 
CASE @A
 WHEN -1 THEN
  INSERT INTO `ids` ( `Nom` , `DernierIdUtilise` ) VALUES ('Managers', '1');
 ELSE
  UPDATE `ids` SET DernierIdUtilise = @A+1 WHERE Nom = 'Managers';
END CASE
 
COMMIT;
Si qqun peux me dire où j'ai tout faux.

Merci encore.
SergeF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2005, 13h32   #2
Nouveau Membre du Club
 
Inscription : juin 2004
Messages : 76
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 76
Points : 29
Points : 29
Par défaut après recherche ...

Après recherche un peu partout, il semble que je n'utilise pas le CASE à bon escient....

En fait, il semble qu'il n'existe pas de vrai langage de script sous mySQL ???

suis je dans le vrai ?

..........

après infos, il semble que cela soit confirmé.... dommaaaage !
SergeF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2005, 13h48   #3
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Bonjour,

Il me paraît utopique de vouloir transposer du code T-SQL tel quel dans un autre SGBD.

A la rigueur en écrivant une procédure stockée ça pourrait fonctionner mais le code serait beaucoup plus lourd et les SP ne sont disponibles qu'avec MySQL 5.

Sinon MySQL 4.1 fournit une option ON DUPLICATE KEY UPDATE qui pourrait convenir dans ton cas :

Code :
1
2
INSERT INTO TABLE (nom, DernierIdUtilise) VALUES ('Managers', 1)
    ON DUPLICATE KEY UPDATE DernierIdUtilise=DernierIdUtilise+1
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2005, 00h39   #4
Nouveau Membre du Club
 
Inscription : juin 2004
Messages : 76
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 76
Points : 29
Points : 29
Merci,

c'est effectivement une solution.
SergeF 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 15h12.


 
 
 
 
Partenaires

Hébergement Web