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 qui renvoie une table


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 103
    Points : 48
    Points
    48
    Par défaut FOnction qui renvoit une table
    Bonjour,

    Je dois créer une fonction qui prend 3 paramêtres et qui renvoit une table qui contient les tuples qui satisfont à un critère. Cette fonction se trouve dans un package que voici :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    SET SERVEROUTPUT ON
    CREATE OR REPLACE PACKAGE GestionEtudiants AS
    TYPE Type_Record IS RECORD
    (
      Matricule ETUDIANTS.MATRICULE%TYPE,
      Nom ETUDIANTS.NOM%TYPE,
      Prenom ETUDIANTS.PRENOM%TYPE
    );
    TYPE Ma_Table IS TABLE OF Type_Record INDEX BY BINARY_INTEGER;
    FUNCTION Rechercher(Matricule IN ETUDIANTS.MATRICULE%TYPE) RETURN ETUDIANTS%ROWTYPE;
    FUNCTION RechercheMatricule(Matricule IN ETUDIANTS.MATRICULE%TYPE) RETURN NUMBER;
    PROCEDURE Supprimer(Matricule IN ETUDIANTS.MATRICULE%TYPE);
    FUNCTION Lister(AnneeSco IN HISTORIQUE.ANSCO%TYPE, Tendance IN GROUPES.TENDANCE%TYPE, AnneeEtude IN HISTORIQUE.SECETUD%TYPE) RETURN Ma_Table;
    END GestionEtudiants;
    /
    CREATE OR REPLACE PACKAGE BODY GestionEtudiants AS
    .....
    FUNCTION Lister(AnneeSco IN HISTORIQUE.ANSCO%TYPE, Tendance IN GROUPES.TENDANCE%TYPE, AnneeEtude IN HISTORIQUE.SECETUD%TYPE)
    RETURN Ma_Table
    AS
    v_test Ma_Table
    BEGIN
    SELECT ETUDIANTS.MATRICULE, ETUDIANTS.NOM, ETUDIANTS.PRENOM INTO v_test(0).Matricule, v_test(0).Nom, v_test(0).Prenom
    FROM ETUDIANTS
    WHERE ETUDIANTS.MATRICULE LIKE 'I28592';
    RETURN v_test; 
    EXCEPTION
      WHEN OTHERS THEN RAISE;
    END Lister;
     
    END GestionEtudiants;
    /
    J'ai enlevé les 3 premiére fonction/procedure qui fonctionnait.
    Par contre dans la fonction Lister je n'arrive pas à sélectionner les lignes qui m'interesse et à les mettre dans Ma_Table.
    Le corps de la fonction est en phase de test mais normalement je doit avoir plusieurs ligne dans la table que je renvoit donc je ferais soit un BULK COLLECT ou un CURSOR.
    Si vous pouviez m'aider ??

    Merci

    Bonne journée.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Perso, j'ai utilisé ça : http://www.oracle-base.com/articles/...unctions9i.php

    Tu fais ta fonction du genre

    RETURN ton_type PIPELINED AS
    BEGIN
    FOR i IN (SELECT blahblah...)
    LOOP
    PIPE ROW i;
    END LOOP;

    Et pour sélectionner le résultat de ta fonction :

    SELECT * FROM TABLE(package.fonction(params))

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 103
    Points : 48
    Points
    48
    Par défaut
    Ok le problème est résolus. Je n'ai pas utilisé ta technique car je ne la comprenais pas bien donc je suis passé par un curseur pour récupérer ma sélection ensuite je met les tuples dans mon record via une boucle.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 22/01/2014, 19h30
  2. fonction qui renvoie une table
    Par ibnas dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2012, 16h12
  3. Ecrire une fonction qui renvoie une structure de données (type)
    Par dinosaure dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/09/2008, 20h59
  4. Fonction qui renvoi une structure (requette)
    Par mael94420 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 05/07/2007, 13h43
  5. Fonction qui renvoie une liste
    Par la_praline dans le forum GTK+ avec C & C++
    Réponses: 20
    Dernier message: 20/04/2007, 21h22

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