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 :

fonction : retourner un table of


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut fonction : retourner un table of
    Bonjour à tous

    je dois creer une fonction qui retourne un tableau de record :
    mais sqldevelloper me refuse la compilation en disant que j'utilise un type avant sa declaration :

    un petit detail : la fonction devra faire partie d'un package.
    Je suppose que je devrais le declarer(le type TABLEEMPLOYES) dans la specification?
    mais je cree mes fonctions indivduellement puis je bidouillerai pour ensuite faire le package. Comment resoudre ce probleme?

    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
    CREATE OR REPLACE
    FUNCTION LISTEREMPLOYES( pNomPro IN PROJETS.NOMPRO% TYPE)
    RETURN TABLEEMPLOYES AS
    TYPE TABLEEMPLOYES IS TABLE OF EMPLOYES% ROWTYPE INDEX BY BINARY_INTEGER;
    vTableEployes TABLEEMPLOYES;
    BEGIN
     
      SELECT * INTO vtableeployes
      FROM EMPLOYES
      WHERE NUMSECU IN (SELECT NUMSECU
                        FROM EMPPRO
                        WHERE NUMPRO IN (SELECT NUMPRO
                                         FROM PROJETS
                                         WHERE NOMPRO = pNomPro));
      RETURN vtableeployes;
      EXCEPTION
      WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20051,'Personne n est associé a ce projet');
                              RETURN NULL;
      WHEN OTHERS THEN DBMS_OUTPUT.PUTLINE('ERREUR: '||SQLCODE||SQLERRM);
                       RETURN NULL;
    END LISTEREMPLOYES;

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour ,

    il y a plusieurs moyens pour y arriver

    en adaptant l'exemple de sheikyerbouti

    Code SqL : 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
    33
    34
    35
    36
     
     CREATE OR REPLACE PACKAGE PKG_TEST IS
     
          TYPE TYP_TAB_EMP  IS TABLE OF EMP%ROWTYPE ;
     
     
     
         FUNCTION Affiche_lignes Return TYP_TAB_EMP ;      
     
       END;
       /
     
    create or replace package body PKG_test as
        FUNCTION Affiche_lignes Return TYP_TAB_EMP
         IS
           Tlignes PKG_TEST.TYP_TAB_EMP ;
           Cursor C_EMP is Select * From EMP ;
         Begin
           Open C_EMP ;
           Fetch C_EMP BULK COLLECT into Tlignes ;
           Close C_EMP ;
           Return( Tlignes ) ;
         End ;
     
       END;
       /
     
    Declare
         Tlignes PKG_TEST.TYP_TAB_EMP ;
        Begin
          Tlignes := PKG_TEST.Affiche_lignes ;
          For i IN Tlignes.first..Tlignes.last Loop
             dbms_output.put_line( Rpad( Tlignes(i).ename, 25 ) || ' --> ' || To_char( Tlignes(i).sal ) ) ;
          End loop ;
        End ;
        /

    ou avec des types créés

    cf tom kytes http://asktom.oracle.com/pls/asktom/...:1058232381458

    ce ne sont que des propositions parmi tant d'autres ...

    La suite a toi d'adapter a ton environnement

Discussions similaires

  1. [2008R2] Fonction qui retourne une table sur Excel
    Par VITALTH dans le forum Développement
    Réponses: 0
    Dernier message: 06/02/2015, 10h34
  2. Fonction qui retourne une table
    Par king_simo dans le forum Développement
    Réponses: 4
    Dernier message: 06/02/2015, 00h34
  3. [2008] Probleme fonction qui retourne une table
    Par karimot dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/12/2013, 11h19
  4. Réponses: 6
    Dernier message: 02/12/2010, 12h04
  5. Procédure stockée ou fonction retournant une table
    Par sessime dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 10/04/2008, 23h22

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