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 :

ORA-22905: sur CURSEUR et TABLE (PIPELINED)


Sujet :

SQL Oracle

Vue hybride

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Par défaut ORA-22905: sur CURSEUR et TABLE (PIPELINED)
    Bonjour,

    Lorsque j'utilise le code ci-dessous pour définir un curseur, j'ai l'erreur ORA-22905 lorsque je mets des paramètres pour v_idNoeud et v_Numero.
    Par contre, lorsque je définis des valeurs directement je n'ai pas l'erreur.

    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
     
         SELECT RTRIM(SUBSTR(ARBRE_NUM, 1+LENGTH('#'), DECODE(INSTR(ARBRE_NUM,'#',1,2),0,LENGTH(ARBRE_NUM), INSTR(ARBRE_NUM,'#',1,2)-(1+LENGTH('#'))))) ROOT_NUM,
                RTRIM(SUBSTR(ARBRE_IDC, 1+LENGTH('#'), DECODE(INSTR(ARBRE_IDC,'#',1,2),0,LENGTH(ARBRE_IDC), INSTR(ARBRE_IDC,'#',1,2)-(1+LENGTH('#'))))) ROOT_IDC
         , C.* FROM (
         SELECT B.*, LEVEL NIVEAU,
           SYS_CONNECT_BY_PATH(B.NUMERO,  '#')||NVL2(B.NUMERO,'',B.CODE_MAT) ARBRE_NUM,
           SYS_CONNECT_BY_PATH(B.IDNOEUD, '#') ARBRE_IDC  
           FROM (
           SELECT A.ARB_IDNOEUD IDNOEUD, A.ARB_IDMAT IDMAT, A.ARB_NUMERO NUMERO, A.ARB_QTE, A.ARB_FEUILLE FEUILLE,  
               A.ARB_NOEUD_PERE.ARB_NUMERO PERE_NUMERO, A.ARB_NOEUD_PERE.ARB_IDNOEUD PERE_IDNOEUD, 
            A.ARB_PROP_NOEUD.PND_LOT_ID LOT_ID,
            M.CODFAMMAT, M.CODE_MAT, M.DESIG_MAT, M.TYPE_MAT,
            E.CODE_EMPL, E.CODE_LIEU_S, E.BATIMENT_EMPL
               , J.PRJ_CODE,SF.SFM_CODE, C1.CODE_CLI CODE_CLI, C2.CODE_CLI CODE_CLI_DO 
           FROM (SELECT A.* 
                 FROM arbre_contenant a, (SELECT * FROM TABLE (SELECT get_row_idnoeuds_en_relation (v_idNoeud, v_numero) FROM DUAL))
    			 --FROM arbre_contenant a, (SELECT * FROM TABLE (SELECT get_row_idnoeuds_en_relation (3851, '1001732%') FROM DUAL)) 
                 WHERE a.arb_idnoeud = ident
                ) A, MATERIEL M, STOCK_CONTENANT SC, EMPLACEMENT E, PROJET J, SFAMMAT SF, CLIENT C1, CLIENT C2
           WHERE     A.ARB_IDMAT   = M.IDMAT 
             AND A.ARB_IDNOEUD = SC.SC_ARB_IDNOEUD(+)
           AND SC.SC_IDEMPL  = E.IDEMPL(+)
           AND M.PRJ_ID      = J.PRJ_ID(+)
           AND M.SFM_ID      = SF.SFM_ID(+)
           AND M.IDCLI       = C1.IDCLI(+)
           AND M.IDCLI_DO    = C2.IDCLI(+)
         ) B 
         START WITH B.PERE_NUMERO IS NULL 
         CONNECT BY B.PERE_IDNOEUD = PRIOR B.IDNOEUD
         ) C;
    J'ai essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CURSOR C1 IS SELECT...
    et aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    C1 SYS_REFCURSOR;
    ...
    OPEN C1 FOR SELECT...
    Les deux donnent la même erreur ORA-22905.

    Quelqu'un pourrait-il m'expliquer d'où cela peut venir SVP.

    Merci.

    REMARQUE : get_row_idnoeuds_en_relation() est une fonction qui renvoie des ligne avec l'utilisation de PIPELINED / PIPE ROW().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-22905: impossible d''accéder aux lignes d''un élément qui n''appartient pas à une table imbriquée

  2. #2
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Quelle est la version d'Oracle ?
    En cas essaye avec un CAST au niveau de la clause Table

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Par défaut
    Citation Envoyé par Loyd1974 Voir le message
    Quelle est la version d'Oracle ?
    En cas essaye avec un CAST au niveau de la clause Table
    Euh, Pardon.

    J'utilise Oracle 10.2.02.
    Mais si possible je dois utiliser avec les version 10.0.1 et 9.2

    J'ai déjà essayé de modifier le paramètre cursor_sharing en similar/exact (forum web) mais il n'y a pas d'évolution.

  4. #4
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    J'avais pas bien lu ton code, mais pourquoi fais-tu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM TABLE (SELECT get_row_idnoeuds_en_relation (v_idNoeud, v_numero) FROM DUAL)
    ?
    Normalement, tu n'as pas besoin de passer par dual, si je ne m'abuses ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE (get_row_idnoeuds_en_relation (v_idNoeud, v_numero))

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Par défaut
    Oui, j'ai déjà modifié la requête en ce sens.

    Mais j'ai toujours la même erreur...

    Merci pour vos aides.

  6. #6
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Avec Cast ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM TABLE (Cast (get_row_idnoeuds_en_relation (v_idNoeud, v_numero) as #TYPE QUE TU UTILISES DANS TA FONCTION PIPELINED)
    il faut reporter le même type que celui du return de ta fonction

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

Discussions similaires

  1. [10gR2] ORA-00933 sur un contenu de variable utilisé comme curseur
    Par zephyrin dans le forum Sql*Plus
    Réponses: 1
    Dernier message: 14/03/2013, 12h08
  2. ORA-22905: cannot access rows from a non-nested table item
    Par DeveloppeurWeb dans le forum PL/SQL
    Réponses: 0
    Dernier message: 28/12/2011, 12h26
  3. table(procedure()) ORA-22905 : Table imbriquée
    Par wakan dans le forum PL/SQL
    Réponses: 9
    Dernier message: 08/06/2011, 08h18
  4. ORA-00942 sur table objet
    Par miniworker dans le forum Import/Export
    Réponses: 1
    Dernier message: 03/08/2010, 11h55
  5. [10g] ora-29829 sur table externe
    Par luchot dans le forum Oracle
    Réponses: 18
    Dernier message: 07/03/2006, 15h22

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