|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() Benoît Inscription : février 2003 Messages : 1 212 ![]() |
Bonjour dans une SP je dois faire un switch mais je ne sais pas si c'est possible
Code :
Vu que mes connaissances en SQL sont limitées j'aurai voulu savoir si je faisais mal un truc ou si simplement ca n'existait pas et que je dois passer par un IF ELSE IF?
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
||
|
|
00
|
|
|
#2 | ||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Bonjour,
En fait CASE est un opérateur, donc il ne peut être utilisé qu'entre un SELECT et un FROM dans le cas d'un SELECT. Ce que vous cherchez à faire peut se traiter avec un IF : Code :
Code :
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||
|
00
|
|
|
#3 |
|
Membre Expert
![]() Benoît Inscription : février 2003 Messages : 1 212 ![]() |
Oki il n'existe pas de switch comme en c,c#,java ect :p
Merci à toi ps: normalement on ne déconseille pas de faire du sql dynamique car les requetes ne peuvent pas être optimiser?
__________________
Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes |
|
|
00
|
|
|
#4 | |||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Citation:
Quelle que soit la requête, SQL Server calcule le meilleur plan possible préalablement à son exécution, et en se basant sur les statistiques, ce qui suppose qu'elle sont à jour (c'est-à-dire maintenues En revanche exécuter du code SQL dynamique à l'aide de EXEC (@sql) et sans paramétrer la requête créée un plan de requête pour chaque requête dès lors que les valeurs codées en dur et qui pourraient être paramétrées changent. En fait SQL Server, lorsqu'on lui soumet une requête, cherche dans le cache de plans la requête sur le HASH du texte de celle-ci. S'il ne ne trouve pas, il calcule un nouveau plan d'exécution, et le stocke dans le cache. Si ce phénomène se produit souvent, on observe un nombre de compilations important. Si on ajoute un espace, une tabulation, on point-virgule, on qu'on change les valeurs codées en dur, un nouveau plan est généré. Donc en écrivant : Code :
Alors que dans ce cas : Code :
Votre cas est un peu plus particulier parce que vous interrogez une table différente suivant la valeur d'une variable ... Cela laisse à penser que votre modèle de données n'a pas été conçu suivant les règles de base ... et de l'art @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|||||
|
00
|
Copyright © 2000-2012 - www.developpez.com