|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() |
Bonjour,
je sèche depuis un sacré bout de temps et je n'arrive pas à lancer une procédure stocké dans une boucle! Ma procédure stockée me retourne de 0 à plusieurs lignes d'un ensemble de tables en fonction des paramètres que je lui passe. J'aimerais obtenir pour chaque ligne d'une autre table la liste des lignes retournée par la procédure stockée. Comment faire! En gros Pour chaque Id de la table1 cumuler les résultat de EXECUTE MaProcedure Id, 0, 0 Merci d'avance Philippe |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Citation:
Que fait votre procédure stockée ? Vous aurez de meilleurs performances en évitant d'appeler des procédure dans une boucle. Faites tout en une seule requête ! |
|
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() |
Bonjour
Voici un bout de code! Code :
Ma procédure n'est appelée qu'une fois! Philippe |
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
A en croire le nom de la procédure stockée, celle-ci vous renvoi le nom d'un animal, en fonction de son ID...
Pourquoi ne pas aller le chercher directement dans la table depuis votre requête initiale ? Y a-t-il un traitement particulier qui est effectué dans l'une de vos SP ? Je pense aussi que vous pouvez (devriez) vous passer de votre table temporaire |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Jusque-là cela semble normal, étant donné qu'il n'y a pas de boucle En outre, l'utilisation d'un nvarchar est elle requise ? Ce type utilise Unicode, qui stocke les caractères de n'importe quel alphabet sur deux octets ... Mais si ne stockez que des caractères de l'alphabet latin et des chiffres arabes, alors le type varchar suffit amplement. En effet, ce dernier utilise ASCII pour stocker un caractère sur un octet ... mais ne prend en charge que les caractères latins Généralement l'utilisation d'une table temporaire peut s'éviter par l'écriture d'une seule requête, ou encore par l'utilisation d'expressions de table commune. Si ces deux possibilités ne sont pas implémentables, il 'agit alors d'un problème de modélisation. Donnez donc votre boucle, votre table, et un jeu de données, que nous voyions plus en détails ce que voulez faire @++
__________________
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 du Club
![]() |
Bonjour,
J'ai plusieurs tables dans mon projet. Dans le cas présent, j'ai une table qui contient tout les animaux d'un refuge et une autre table qui contient un historique du changement de nom de chaque animal. Donc ma procédure stockée retourne pour chaque Id valable, de un à plusieurs noms avec la date du changement de nom. Donc si un animal à changé trois fois de nom dans sa vie, j'aurai 3 noms. Pour faire de la "name completion", j'ai besoin de connaitre tout les noms différents qui se trouve dans la base selon des critères. Donc, j'aimerai parcourir la table animal, de prendre l'id de chaque animal pour le donner comme argument à ma procédure stockée. Philippe |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Cela me semble inutile puisqu'il vous suffit de faire une jointure entre la table animal et la table historique animal ...
Cherchez vous à spécifier une liste d'identifiants / noms ? Si tel est le cas, une seule requête dans une seule procédure stockée suffit @++
__________________
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