Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes 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 01/02/2011, 11h33   #1
Invité de passage
 
Thomas
Inscription : mai 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Thomas

Informations forums :
Inscription : mai 2010
Messages : 19
Points : 4
Points : 4
Par défaut Erreur "CASE"

Bonjour à tous !

Je suis en train de faire une procédure stockée sous mssql 2005.
J'essaie d'y inclure un CASE pour éviter les 'if'. Mais j'ai une erreur : "Msg*156, Niveau*15, État*1, Procédure*NbClient, Ligne*44
Syntaxe incorrecte vers le mot clé 'CASE'."

J'ai suisi à la lettre un tuto, pour créer le CASE, je pense avoir tout bien fait; mais il me retourne cette erreur que je ne comprends pas.
Voici le morceau de code la procédure :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN
	CASE @boucle 
		WHEN 1 THEN 
			BEGIN
                            SET @encours1=@regroupTole;
			    SET @nbtole1=@nbtole;
		        END	
 
		WHEN 2 THEN
			BEGIN
			     SET @encours2=@regroupTole;
			     SET @nbtole2=@nbtole;
			END 
END
Toutes mes variables sont correctement déclarées.
Merci de votre aide par avance
Thomas_P est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h45   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 950
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 950
Points : 17 769
Points : 17 769
Le cas ne peut renvoyer qu'une seule valeur. Il se place dans une requête et non pas dans du code transactionnel.

Code :
1
2
3
4
5
6
SELECT ...
CASE @boucle 
	WHEN 1 THEN @regroupTole
	WHEN 2 THEN @nbtole;
END 
FROM ...
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2011, 19h26   #3
Invité de passage
 
Thomas
Inscription : mai 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Thomas

Informations forums :
Inscription : mai 2010
Messages : 19
Points : 4
Points : 4
Merci beaucoup
Thomas_P 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 07h11.


 
 
 
 
Partenaires

Hébergement Web