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

PL/SQL Oracle Discussion :

Utilisation procedure pl/sql dans requete sql


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut Utilisation procedure pl/sql dans requete sql
    Voila je suis debutante en pl/sql et j'ai cree une procedure getDistance(p t_points) pour calculer la distance d'un point a un autre et j'aimerai l'utiliser dans un requete sql pour connaitre la distance entre deux points idp donnes 'Py' et 'Px' mais je ne sais pas du tout comment ecrire la requete sql en utilisant ma methode getDistance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TYPE t_points AS OBJECT
    (
     idp VARCHAR(5),
     coord t_coordonnees,
     echelle NUMBER(5),
    )
    /

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Il n'y a pas de getDistance dans la source que tu proposes

    Et merci de penser aux balises CODE

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Ben le fait de donner le type points je ne voyais pas l'interet de mettre le corps de la methode vu que c'est juste le calcul d'une distance entre deux points a partir des coordonnees mais bon voici elle compile normalement

    @orafrance Ps: je ne savais pas qu'il y avait des balises codes desole

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE OR REPLACE TYPE BODY  t_points IS
    MEMBER FUNCTION getDistance(p t_points) RETURN NUMBER IS
    distance NUMBER :=0;
    BEGIN
    distance := SQRT(POWER((p.coord.x - SELF.coord.x),2) + POWER((p.coord.y - SELF.coord.y),2));
    RETURN distance;
    END getDistance;
    END ;
    show errors;
    l;
    c'est juste que je ne sais pas comment l'utiliser dans une requete select pour avoir la distance entre deux points 'py' et 'px'


    Je sais je suis pas douee en sql et pl/sql mais j'ai ratee quelques cours suite a des soucis de sante

  4. #4
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select getDistance(p) from dual
    sachant p est renseigné de type t_points
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    j'ai la reponse suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT getDistance(p) FROM dual
           *
     
    ERROR at line 1:
    ORA-00904: "GETDISTANCE": invalid identifier

    je pensai qui fallait plutot quelque chose du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT p1.getDistance(p2)
    FROM .............

  6. #6
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    ET oui, comme il s'agit d'une méthode de l'objet, il faut d'abord un objet pour pouvoir ensuite appeler sa méthode. Je ne suis pas sûr que cela convienne à votre besoin. Une simple fonction stockée serait sans doute plus simple à utiliser.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  7. #7
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    supposant qu'on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TYPE t_points AS OBJECT
    (
     idp VARCHAR(5),
     coord varchar(10), 
    echelle NUMBER(5),
    )

    parceque je ne connait pas

    et testez...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select getdist(t_points('rrrr','y',41325)) from dual
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    bref ma question est surtout comment obtenir p1 et p2
    ce qui vient apres le select

    puisque je dois selectionner p1 et p2 par rapport a leur idp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TYPE t_coordonnees AS OBJECT
    (
     x NUMBER(5),
     y NUMBER(5)
    )
    /

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Par contre eviter de me parler de DUAL je n'ai pas vu cette fonction dans mon cours merci

  10. #10
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select getdist(t_points('hhh',t_coordonnees(10,20),5)) from dual
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  11. #11
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Tbien
    dual est une table de oracle qui nous aide à executer des fonction ou des expressions .....
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    j'aimerai une reponse et/ou une explication sans l'utilisation de DUAL SI POSSIBLE

  13. #13
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Tu peux peut-être chercher tout seul aussi non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SET SERVEROUTPUT ON
    DECLARE
    result NUMBER;
    BEGIN
    result := getdist(t_points('rrrr','y',41325));
    DBMS_OUTPUT.PUT_LINE('Résultat = ' || result );
    END;
    /

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    Je cherche depuis deux jours et il me manque juste ça pour pouvoir avancer dans l'exercice et je suis bloqué a ce niveau connement je ne sais pas d'ou vient mon erreur

    sinon je ne serais pas la mais je trouve vos réponses tres compliquées vu que je suis debutante je ne pense pas que le prof s'attend a se qu'on utilise plus qu'une simple requete select....from.....where voir plusieurs requetes select imbriquées

  15. #15
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    plus simple que SELECT tafontion FROM DUAL il n'y a pas

    Pour rappel, il y a un cours PL/SQL sur ce site et des réponses concernant DUAL dans le forum...

    Et toujours, la doc oracle sur http://tahiti.oracle.com

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    la requete suivante marche et j'obtiens bien la distance entre les points P1 et P2

    mais je veux pouvoir obtenir la distance entre P1 et P2(soit le point de p.idp='P2') sans avoir a écrire ça

    ('P2' ,t_coordonnees(2,9), 20, NULL)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select p.idp point, p.getDistance(t_points('P2' ,t_coordonnees(2,9), 20, NULL)) distance_P2_P1
    from points p
    where p.idp='P1';

    ps: je n'ai pas utiliser DUAL il me semble

  17. #17
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par KNIZOU Voir le message
    ps: je n'ai pas utiliser DUAL il me semble
    parce que les données viennent d'une table ce qu'on ne pouvait pas deviner

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    j'ai mis tout le code util il me semble

  19. #19
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    c'est juste la première fois qu'on entend parler de la table points il me semble

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Points : 42
    Points
    42
    Par défaut
    ben donc il aurait mieux fallu demander des précisons plutot que d'affirmer que il n'y avaity pas plus simple que quelque chose que je précise ne pas connaitre vu que je suis débutante

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Utilisation variable/alias (SQL) dans requet
    Par caledonien dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/11/2011, 09h38
  2. Réponses: 13
    Dernier message: 23/09/2011, 18h24
  3. utiliser une requete SQL dans un shell
    Par gdeon dans le forum Linux
    Réponses: 6
    Dernier message: 21/04/2009, 20h51
  4. [SQL] Recupération Requete SQL dans un tableau dynamique PHP
    Par victor.jbju dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/09/2006, 16h48
  5. résultat d'une requete SQL dans un tableau en JSP
    Par Paradoxys dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/04/2005, 16h17

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