SQL ?

Etienne -  
 etienne -
Bonjour voilà j'aurai aimé savoir s'il existait une instruction de type if then en SQL (en SQl server pour être tout à fait précis)
J'en aurai besoin (en tout cas ça me serait très pratique) car j'ai une requête à faire, et selon le type de la donnée, la requête sera quelque peu différente (il s'agit de concaténer des champs, et ces champs diffèrent selon la nature de l'article)
Je connais bien sur la clause where (on doit pouvoir se débrouiller uniqument avec ça) mais j'aimerai utiliser if then. En plus je pense que ça existe car quand j'ai taper une requête avec if then dedans, SQL a braillé pour la syntaxe et non pour les mots qu'il ne connaissait pas... "error near the keyword then..."

Merci d'avance pour votre aide
:)
A voir également:

11 réponses

teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
0
deus Messages postés 93 Statut Membre 91
 
Salut,

Voici ce que dit l'aide de SQL Server :
"
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
PRINT 'Average title price is more than $15.'
"
Donc utilise If sans then

ciao

dEUS
There's no success like failure
And failure's no success at all
0
etienne
 
merci beaucoup
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
Attention:
L'instruction IF ne fait pas partie du SQL.

Elle fait partie des extensions au SQL (TSQL pour Microsoft/Sybase, PL/SQL pour Oracle).
0
etienne
 
Ok mais y'a t-il moyen de faire fonctionner une requête avec un if sous SQL SERVER ???
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667 > etienne
 
oui oui.
ça marche.
l'exemple de Deus est syntaxiquement correct.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
etienne
 
Oulala j'ai toujours des problèmes, j'ai fais pas mal de tests, et une requête vraiment conne comme:

IF DATALENGTH("gjdfklhgmsfhjsmhik")>10 BEGIN UPDATE article set GA_LIBELLE="jsl" END

me renvois une erreur de création de handle de curseur (si quelqu'un sait pourquoi...)
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
Erreur de création de curseur ?
bizarre.

Mais tu as vraiment besoin d'utiliser DATALENGTH ?
LEN ne suffit pas ?
(DATALENGTH est uniquement utile pour mesure l'espace mémoire consommé par un champ. Il n'est pas utile pour mesurer la longueur d'un champ char/varchar/nvarchar).
0
etienne
 
LEN suffirait (merci de m'avoir fourni cette info) mais le problème reste le même avec LEN ou DATALENGTH...
Ca vient peut etre de mon implémentation SQL. en fait je tape les requêtes directement dans un logiciel (de gestion commerciale), donc je sais pas trop, ça pourrait dépendre de l'implémentation de ce logiciel... je vais demander des renseignements au prestataire pour savoir si je peux utiliser un if ou pas..
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
bizarre cette histoire de curseur.

Si tu as un doute sur ta requête, lance la seule dans le Query Analyzer.
Là au moins tu saura si c'est ta requête seule qui est en cause dans l'erreur.
0
etienne
 
Et ou peut on trouver le Query analyzer please?
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
Menu Démarrer > Programmes > Microsoft SQL Server > Query Analyzer.

ou bien trouve isqlw.exe sur ton disque dur.
0
etienne
 
Merci Sebsauvage
Le query analizer était sur le serveur mais j'ai pu testé la requete qui fonctionne bien, donc ça vient du logiciel à partir duquel j'effectue mes requetes (on dois pas pouvoir faire tout ce qu'on veut)
Merci beaucoup sebsauvage A+
0