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 :

Aide: Fonction à partir d'une requête JOIN


Sujet :

PL/SQL Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut Aide: Fonction à partir d'une requête JOIN
    Bonjouir,

    pourriez-vous me dire si c'est possible? Écrire une fonction PL/SQL qui retourne les résultats de cette requête?

    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
    <div style="margin-left:40px">select	 
    	 "DOSSIER"."ID" as "DOSSIERID",
    	 "DOSSIER"."TITLE" as "TITLE",
    	 "DVD"."ID" as "DVDID",
    	 "DVD"."NAME" as "DVDNAME",
    	 "DVD"."ID_DOSSIER" as "DVD_ID_DOSSIER",
    	 "ELEMENTS"."ID" as "ELEMENTSID",
    	 "ELEMENTS"."NAME" as "ELEMENTSNAME",
    	 "ELEMENTS"."ID_DVD" as "ELEMENTS_ID_DVD"
     from	 "DOSSIER" "DOSSIER",
    		 "DVD" "DVD",
    		 "ELEMENTS" "ELEMENTS"
     where   "DVD"."ID_DOSSIER"="DOSSIER"."ID"
     and	 "ELEMENTS"."ID_DVD"="DVD"."ID"
      and 	 "DOSSIER"."TITLE" = :P3_SEARCH
    ORDER BY "DVD".NAME</div>
    On m'a dit que pour obtenir le template voulu (dans APEX), je devais écrire une fonction PL/SQL qui retourne 1 seul résultat. Par la suite, je pourrai modifier le template et obtenir le résultats que j'ai mis plus bas.:


    RÉSULTATS

    TITLE: FIGARO

    DVD: C2008-203
    Elements: 12l10201.tif, 12l10202.tif, 12l11101.tif, 12l11102.tif, 12l11201.tif
    12l11202.tif, 12l12101.tif, 12l12102.tif

    DVD C2008-204
    Elements: 12l12202.tif, 12l13101.tif, 12l13102.tif, 12l13201.tif, 12l13202.tif,
    12l14101.tif, 12l14102.tif, 12l14201.tif, 12l14202.tif, 12l15101.tif,
    12l15102.tif, 12l15201.tif

    DVD: C2008-205
    Elements: 12l15202.tif, 12l16101.tif, 12l16102.tif, 12l1
    6201.tif, 12l16202.tif,
    12m01101.tif, 12m01102.tif, 12m01201.tif

    merci de votre aide,

    Roseline

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut Quelque chose comme ca?
    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
    CREATE FUNCTION my_super_function (passed_parm IN varchar2)   <-- declare the passing variable here
    RETURN VARCHAR(2000);
    IS 
    details VARCHAR(2000); 
    BEGIN 
    select	 
    	 "DOSSIER"."ID" || ',' ||     <<-- concat the columns with a comma between em to make a long string
    	 "DOSSIER"."TITLE" || ',' ||
    	 "DVD"."ID" || ',' || 
    	 ...
     from	 "DOSSIER" "DOSSIER",
    		 "DVD" "DVD",
    		 "ELEMENTS" "ELEMENTS"
      INTO  details     <-- do something with the data being returned by SQL.  Put it into here 
     where   "DVD"."ID_DOSSIER"="DOSSIER"."ID"
     and	 "ELEMENTS"."ID_DVD"="DVD"."ID"
      and 	 "DOSSIER"."TITLE" = passed_parm <-- this is where the parameter gets used
      and          ROWNUM < 2 <-- ensure that a max of 1 row can be returned, 'cause we only got one variable to fill
    ;  <-- a SQL statement is a single statement in PL/SQL and needs it's own terminator.
     
    RETURN details;
    END;
    /

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Bonjour.
    Le "INTO details" doit être placé avant le "FROM" dans la requête.

Discussions similaires

  1. [2012] Fonction table à partir d'une requête dynamique
    Par VITALTH dans le forum Développement
    Réponses: 5
    Dernier message: 13/05/2015, 14h06
  2. [AC-2010] Fonction VraiFaux à partir d'une requête avec critère Comme[ ]
    Par CmzxNene dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 26/11/2012, 21h56
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 10h29
  4. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 14h10
  5. Réponses: 2
    Dernier message: 02/11/2004, 12h38

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