|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre actif
![]() |
Bonjour,
Je debute en SQL Serveur 2005 voici une boucle sur mon cursor qui tourne indefiniment : Code :
Code :
Merci |
||||
|
|
00
|
|
|
#2 | |||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 668 ![]() |
Bonjour,
Citation:
En outre les performances des curseurs, quel que soit le SGBDR (R que vous avez dû oublier ...) sont catastrophiques ... SQL est un langage : - ensembliste, donc il est conçu pour traiter les lignes dans leur ensemble, et non pas dans leur unité comme vous le faites - déclaratif : vous décrivez le résultat que vous souhaitez obtenir, pas la façon dont vous voulez l'obtenir, comme dans un langage fonctionnel Donc quand vous codez en SQL, oubliez les autres langages Une requête comme celle qui suit fait parfaitement le boulot en très peu de temps : 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 |
|||||
|
10
|
|
|
#3 |
|
Membre actif
![]() |
En effet ce n'est pas la meme approche.
Le champ realTimeDisplayCategoryId n'esiste pas dans la table xmlLayoutProperty mais je vais m'appuyer sur ton model pour essayer de faire en une requete Merci Michaël |
|
|
00
|
|
|
#4 | ||||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Rien à redire à la réponse d'Elsuket ![]() Sur la raison de votre boucle infini: dans cette partie de code : Code SQL :
Votre WHILE n'étant pas immédiatement suivi d'un BEGIN, c'est uniquement la ligne suivante qui est exécutée en boucle. Pour être plus clair, votre code est équivalent à Code SQL :
Cela dit, vous avez également un autre problème, car même si on retire vos lignes de print, (que vous avez, je suppose, ajoutées pour débugger), on obtient ceci : Code SQL :
Qui tournera en boucle (ou ne tournera pas du tout) car comme vous ne faites aucun FETCH dans votre boucle, @@FETCH_STATUS ne changera jamais de valeur ! |
||||||
|
|
10
|
|
|
#5 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 668 ![]() |
Citation:
__________________
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
|
|
|
#6 |
|
Membre actif
![]() |
Bonjour,
Bon j'ai résolu le problème grace à vos conseils merci. Je n'avais pas compris que le FETCH NEXT FROM permettait d'itérer. Je ne peux pas traduire le besoin fonctionnelle par une seule requete au finale. En tout cas merci pour votre aide. |
|
|
00
|
|
|
#7 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 668 ![]() |
Citation:
@++
__________________
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