IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

fonction recursive sur une base de données relationnelle-obj


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 22
    Points : 17
    Points
    17
    Par défaut fonction recursive sur une base de données relationnelle-obj
    Bonjour,

    Je dois écrire une fonction qui devrait me rendre un chemin (une liste de noms) d'un point vers un autre.

    J'ai 2 types point et chemin ce dernier ayant 2 références entrée et sortie vers point. L'idée serait de parcourir à partir du premier point la liste de tout les points atteignables et ainsi de suite jusqu'à trouver le point de destination.

    Je me connais pas du tout en pl/sql et je suis sous oracle 9i. Merci de me doner un aperçu de la solution (le code car j'ai trouvé la syntaxe un peu rude).
    Sinon comment on fait pour écrire les procédures en java?

    Merci d'avance

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut Re: fonction recursive sur une base de données relationnelle
    Citation Envoyé par anoukhan
    (le code car j'ai trouvé la syntaxe un peu rude).
    Cela veut-il dire que tu as déjà une idée de la solution ? Dans ce cas poste ce que tu as fait, cela sera plus facile pour t'aider.

    Dans l'idée que tu décris, il y a un risque de boucle infinie... à moins que tu ne dises pas tout.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut Re: fonction recursive sur une base de données relationnelle
    Citation Envoyé par anoukhan
    Sinon comment on fait pour écrire les procédures en java?
    Je pense qu'en faisant une recherche sur ce forum, tu devrais trouver des exemples.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    create or replace function getWayTo(dest TCrossPoint, path TCrossPointList) returns boolean
    as
        found boolean := false;
        cursor exits is select DEREF(s.endPoint) from slope s, table(s.parts) sparts
        	where sparts.startPoint=REF(self);
    begin
        open exits;
        loop
             fetch exits into point;
    	 exit when exits%notfound;
    	 path.extend;
    	 path(path.last) := point;
    	 if(point.getWayTo(dest, path)) then
    	      found := true;
    	      exit;
    	 else
    	      path.delete(path.last);
    	 end if;
        end loop;
        close exits;
        return found;
    end;
    Si jamais slope est un chemin et slopepart est un bout allant d'un point à un autre. Voilà le code que j'ai écrit, pour les boucles infinies c'est vrai qu'il faut vérifier que le point actuel n'est pas dans la liste path.

    Donc je dois rajouter cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    create or replace function existence(point TCrossPoint, path TCrossPointList) returns boolean
    as
        found boolean := false;
    begin
         for i in 1..path.count loop
    	 if(point = path(i)) then
    	      return true;
    	 end if;
        end loop;
        return false;
    end;

Discussions similaires

  1. Réponses: 11
    Dernier message: 22/01/2014, 19h30
  2. Problème avec les indexes sur une base de données.
    Par osoudee dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/02/2006, 09h24
  3. Travailler sur une base de donnée
    Par nolan76 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 31/01/2006, 17h51
  4. Test des liens vide sur une base de données
    Par FLANQUART Marie dans le forum ASP
    Réponses: 1
    Dernier message: 10/11/2005, 14h35
  5. Connexion sur une base de données Postgre
    Par ktox dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/08/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo