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 :

[oraclei 8i]Nested Tables


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut [oraclei 8i]Nested Tables
    bonjour,

    je me suis basé sur le tutoriel de SheikYerbouti sur ce style de function.
    j'ai crée le type et la function, mais quand je lance la requete sous sqlplus j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-22905: cannot access rows from a non-nested table item
    j'ai suivi ceci : http://sheikyerbouti.developpez.com/...record_set.htm

    est ce que c'est du à mon oracle 8i ?
    ou alors autre chose ?

    Merci

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Il y a plusieurs solutions dans ce tuto. Pourriez-vous indiquer celle que vous avez utilisé ?

  3. #3
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    bonjour,

    j'essaie d'utiliser celle du chapitre 3 : Function that returns a NESTED table

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Avez-vous créé en base les types corespondants ? (CREATE TYPE ....)

  5. #5
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    oui j'ai créee les 2 types

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Pouvez-vous joindre le code utilisé ?
    Il est possible qu'en 8i, l'utilisation d'un cast soit nécessaire...

  7. #7
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create or replace type TYP_REC_EMP as object
    (
      SITEGEO     VARCHAR2(4),
      LIBELLE     VARCHAR2(100),
      INITIALE       VARCHAR2(100),
      ABREV       VARCHAR2(40))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create or replace type TYP_TAB_REC_EMP is table of TYP_REC_EMP
    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
     
    create or replace function ret_cur return TYP_TAB_REC_EMP Is
     
      tab TYP_TAB_REC_EMP := TYP_TAB_REC_EMP(NULL,NULL,NULL,NULL);
     
      Cursor C_EMP is
     
      Select * From sites ;
     
      i pls_integer := 0 ;
     
    Begin
     
      For CEMP in C_EMP Loop
        tab.extend ;
        i := i + 1 ;
        tab(i) := TYP_REC_EMP(CEMP.sitegeo,CEMP.libelle,CEMP.initiale,CEMP.abrev);
      End loop ;
     
      return tab ;
     
    End;
    et ensuite je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table(ret_cur);

  8. #8
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    cela fonctionne parfaitement en 9i et je ne vois pas quel est le problème avec la 8i, car ce sont bien des nested table utilisées...

  9. #9
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    je ne comprends pas la requete suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table(ret_cur);
    table c'est quoi ?

    EDIT:j'ai testé exactement la meme chose en 9i et ça fonctionne grrrrr!!

  10. #10
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    le mot clé TABLE permet d'indiquer que la source est une collection.

  11. #11
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    pourquoi avec la 8i ça marche jamais

  12. #12
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    personne n'a osé utiliser les nested tables sur la 8i ?

  13. #13
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Les nested table fonctionnent en 8i puisque vous pouvez créer les types et alimenter la collection. C'est seulement la syntaxe particulière avec le mot clé TABLE qui ne passe pas pour les interroger.

  14. #14
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    ok ça marche il fallait utiliser la function cast like that :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from table(cast((ret_cur) as typ_tab_rec_emp))

  15. #15
    Membre éclairé Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Par défaut
    Par contre, je me demande, ou sont stockées les données ? dans un tablespace ? si oui lequel ?

  16. #16
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par Nounoursonne
    Par contre, je me demande, ou sont stockées les données ? dans un tablespace ? si oui lequel ?
    ??

    Nulle part ! votre collection est constituée en mémoire dans la fonction ret_cur() dont les données proviennent de votre table...

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

Discussions similaires

  1. [JDBC][ORACLE] Lire une "nested table"
    Par chadec4 dans le forum JDBC
    Réponses: 1
    Dernier message: 13/02/2006, 09h55
  2. [8i][forms 6i] nested table
    Par Magnus dans le forum Oracle
    Réponses: 2
    Dernier message: 12/01/2006, 10h22
  3. Nested table et contrainte UNIQUE
    Par evlad dans le forum Oracle
    Réponses: 7
    Dernier message: 05/01/2006, 10h13
  4. pb trigger avec nested table
    Par evlad dans le forum Oracle
    Réponses: 1
    Dernier message: 29/12/2005, 12h04
  5. Réponses: 2
    Dernier message: 19/10/2005, 14h23

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