|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : mars 2005 Messages : 5 ![]() |
Bonjour
J'essaye de controler une table pour des cycles au niveau des données. Je veux utiliser la commande SQL "CONNECT BY" dnas une procédure : Code :
Citation:
|
|||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Connect est utilisé dans isql pour se connecter à une base.
By c'est le mot clé que l'on trouve dans order by start existe que sous firebird avec first afin de limiter le nombre d'enregistrement renvoyés. Votre ordre ne marchera pas sous firebird/Interbase. En plus si vous faites un select dans une procedure il vous faudra obligatoirement un INTO. Je vous suggère de regarder le tuto sur ce site qui traite des procédures stockées. Et je connais pas votre syntaxe et comprend pas bien ce que c'est sencé faire ? (Ce que je sais c'est que c'est pas dans les normes SQL, c'est un ajout malheureux qu'a fait ORACLE (ils auraient pu utiliser un autre mot clef tant qu a faire dans la nouveauté) et donc ce n'est dans les normes SQL. Je crois que ça à voir avec la récursivité mais j'en sais pas plus. Donc je ne peux pas vous aider plus sans précision. |
|
|
00
|
|
|
#3 | |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Citation:
C'est du Oracle ça !? Sous IB, CONNECT (sans BY) permet de se connecter à une BdD...
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : mars 2005 Messages : 5 ![]() |
L'idées est de créer un arbre hiérarchique à partir d'une table.
Le contrôle d'erreur qui est supposé lié à la fonction "CONNECT BY" permettant de détecter les cycles. Une autre opération devait ensuite supprimer la ligne nouvellement créée. |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : décembre 2004 Messages : 142 ![]() |
Un arbre hiérarchique ?
D'après le nom de ta table (Nomenclature) et si je puis me permettre, tu devrais peut-être aller voir : http://sqlpro.developpez.com/cours/arborescence/ Pour la syntaxe, Barbibulle a répondu. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : mars 2005 Messages : 5 ![]() |
J'avais bien compris, c'était pour donner une idée plus claire du fonctionnement que je voulais obtenir.
Par contre, je ne peux pas modifier la structure de mes donnée. |
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : mars 2005 Messages : 5 ![]() |
Voici un version qui fonctionne
Rappel rapide : le but est de détecter des cycles dans un arbres. Code :
Le problème est résolu en ajoutant un controle avant l'appel récursif. Merci pour les conseils. |
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Il y a deux types de PS celles qui renvoient des ensembles de données et celles qui ne renvoient que des paramètres.
La première peut être utilisée dans des Code :
SELECT * FROM MaProcedure('Toto',1,3) WHERE ...; Vous vous doutez maintenant que vous êtes dans le second cas Pour que votre procédure retourne des valeurs de type enregistrements et non paramètres de retour, il suffit de placer un (ou plusieurs ) |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Autres remarques vous n'êtes pas obligé de mettre les : devant les variables quand ce n'est pas dans un ordre SQL (ou execute procedure)
Ensuite sachez que Execute procedure n'attend qu'un seul enregistrement en retour. Si votre procédure est suceptible d'en retourner plusieurs faite un Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mars 2005 Messages : 5 ![]() |
Merci pour les précisions.
Dans l'état actuel, la procédure me satisfait : je ne doit avoir qu'une seule version de la variable boucle, la PS étant basée sur le fait que les autres noeuds sont bien formé et que seul le premier est suceptible de former une boucle. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com