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 :

Probleme avec CAST()


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut Probleme avec CAST()
    Bonjour,
    Dans une de mes procédures je manipule des collections afin de faire des calculs sur des données. Ma procédure renvoie un ref cursor.
    J'aimerai remplir mon ref cursor à partir d'une collection en faisant un cast comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    open plan_ret for
                    select * from table(cast(plan_ as RP3.tab_planification_ref));
    et j'ai l'erreur ora-00902 : Invalid datatype;

    Sacahant que mon ref cursor et ma collection pointe sur le meme record..
    Voici le code de mon packages :
    La partie BODY :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Procedure planification(anne in numeric ,plan_ret out plan_ref) --return planification_tab
        is        
           plan_    tab_planification_ref;
               ..................
     
          open plan_ret for
                    select * from table(cast(plan_ as RP3.tab_planification_ref));   
     
        end planification;
    La Partie specification :
    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
     
    CREATE OR REPLACE PACKAGE NQI.RP3 AS             
     
    Type tab_planification_rec is 
        record (
            domaine_     EXTRA_PROJECT.domaine_code%type,
            code         NQI_CPPJ_PROJECT.CODE%type,
            nom          NQI_CPPJ_PROJECT.name%type,
            status       NQI_CPPJ_PROJECT.STATUS%type,
            personel     NQI_P_BUDGET_ITEM.DESCRIPTION%type,
            jour         date,
            budget       numeric 
        );             
    ........
     
    TYPE tab_planification_ref IS TABLE OF tab_planification_rec
                     INDEX BY BINARY_INTEGER;
     
    Type plan_ref is ref cursor 
            return tab_planification_rec;                
    .......                
    Procedure planification(anne in numeric ,plan_ret out plan_ref); --tab_return planification_ref;
     
     
    END RP3;
    /
    J'ai pas mal charchebsur internet mais je vois vraiment pas où est le problème.
    Pouvez vous donc m'aidez ????

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    Je ne connais pas Oracle mais quand vous fait votre cast
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cast(plan_ AS RP3.tab_planification_ref)
    Ne faudrai-t-il pas mettre un type de donnée à la place de RP3.tab_planification_ref ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut
    Ne faudrai-t-il pas mettre un type de donnée à la place de RP3.tab_planification_ref ?

    Tu veux dire qu'il n'est pas possible de "convertir" une collection ( un type TABLE OF) en table avec cette commande ?

    Si non connait tu un moyen de remplir un ref cursor à partir d'une collection ??

  4. #4
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Il faut savoir que CAST convertit un varray en un "nested table". Toi tu essayes de convertir une "associative array" en "nested table", a mon avis c'est pourquoi tu as ce message d'erreur.

    Tu pourrais peut être utiliser directement ton "associative array" dans ta procedure qui utilise la ref cursor.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut
    Citation Envoyé par rvfranck Voir le message
    Toi tu essayes de convertir une "associative array" en "nested table"
    Non je veux convertir une de "table de record" en "nested table".

    Aussi y a t il une fonction qui me permettrait de faire cette opération ou connaissez vous un moyen pour remplir un ref cursor avec un record ??

  6. #6
    Expert confirmé 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
    Par défaut
    Citation Envoyé par saladin04 Voir le message
    Non je veux convertir une de "table de record" en "nested table".

    Aussi y a t il une fonction qui me permettrait de faire cette opération ou connaissez vous un moyen pour remplir un ref cursor avec un record ??
    Il n'est pas possible. La table de records n'est pas un type de données connu par SQL!
    Il est possible de faire ce que vous souhaitez en employant des objets à la place des records et des nested table à la place des "associative array".

Discussions similaires

  1. probleme avec un cast
    Par isoman dans le forum Général Java
    Réponses: 9
    Dernier message: 26/11/2009, 22h55
  2. [Requete] Probleme avec double jointure et cast
    Par guromgd dans le forum Développement
    Réponses: 5
    Dernier message: 04/05/2009, 13h42
  3. Probleme avec un CAST
    Par freud dans le forum SQL
    Réponses: 9
    Dernier message: 02/03/2009, 21h25
  4. probleme de cast avec String
    Par Asmod_D dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/07/2007, 01h00
  5. Probleme de Cast avec TreeMap.keySet().toArray();
    Par kboo dans le forum Langage
    Réponses: 6
    Dernier message: 11/05/2007, 14h14

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