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

SQL Oracle Discussion :

Création d'une procédure qui fait appel à un tableau résultat de retour d'une fonction


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Création d'une procédure qui fait appel à un tableau résultat de retour d'une fonction
    Bonjour tout le monde !

    je travaille avec une base de données Oracle 9i, j'ai ce package :

    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
    CREATE OR REPLACE PACKAGE SYSTEM.MonPackage IS
     
    TYPE Enr1 IS RECORD (Enr1_Var1 number(4),Enr1_Var2 varchar2(1));
    TYPE Enr2 IS RECORD (Enr2_Var1 NUMBER(15,2),Enr2_var2 NUMBER(3),Enr2_Var3 NUMBER(1));
    TYPE Tab1 IS TABLE OF Enr2 INDEX BY BINARY_INTEGER;
    TYPE Enr3 IS RECORD (Enr3_Var1 number(4),Enr3_Tab1 Tab1,Enr3_Var2 NUMBER(3));
     
     
    TYPE Tab_Enr1 IS TABLE OF Enr1 INDEX BY BINARY_INTEGER;
    TYPE Tab_Enr3 IS TABLE OF Enr3 INDEX BY BINARY_INTEGER;
     
    TYPE Res_Enr IS RECORD(     Res_Enr_Var     varchar2(25),
                                T_Tab_Enr1      Tab_Enr1,
                                T_Tab_Enr3      Tab_Enr3); 
     
     
    FUNCTION MaFonction(Param varchar2) RETURN Res_Enr; 
     
    END;--package 
    /
    Je veux créer une procédure stockée qui aura en paramètre de sortie les tableaux contenu dans le record 'Res_Enr'. En fait pour les types simples, comme dans ce cas la valeur de 'Res_Enr_Var' je les retourne comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE PROCEDURE SYSTEM.MaProcedure (Param1 in varchar, Param2 out varchar ) IS  
      R                 MonPackage.Res_Enr;
     
    BEGIN
      R:=MonPackage.MaFonction(Param1);                
     
      Param2 := R.Res_Enr_Var ;
     
    END;
    /
    et ça fonctionne bien, ! maintenant il me reste les tableaux ...

    Merci d'avance pour vos réponses et bonne journée !

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Et vous avez une question ?
    Sinon, ne jamais crée des choses dans le schéma system.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    oui je suis tout à fait d'accord avec toi concernant la remarque

    sinon, mon problème consiste en l'appel du tableau Tab_Enr1 ou Tab_Enr3 dans la procédure stockée 'MaProcedure' !!! en utilisant seulement des variables de type simple (varchar, number, date ...) en paramètre de retour de la procédure ...

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Désolé, mais pour l’instant je ne vois pas où vous avez des difficultés. La variable R vous permet de faire référence au tableau. Ce tableau, via un indice vous permet de référencer une ligne spécifique dans le tableau qui est de type composée (record) des types simples que vous avez définis.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    en fait je me bloque dans la procédure, et puis comment je peux savoir la taille du tableau qui résulte de la fonction?!?

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Pour les collections, tu as le tuto de SheikYerbouti :
    http://sheikyerbouti.developpez.com/...age=Chap5#L5.3
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. Procédure d'une table qui fait appel à une autre table
    Par betsprite dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/06/2010, 17h05
  2. Réponses: 4
    Dernier message: 28/09/2009, 10h07
  3. Réponses: 0
    Dernier message: 04/08/2009, 11h30
  4. Réponses: 2
    Dernier message: 21/04/2006, 14h32
  5. appel d'une procédure qui renvoie le résultat d'une requete
    Par audreyc dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 16/03/2006, 14h02

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