ORA-01446 - impossible de sélectionner ROWID de vue DISTINCTS, GROUPE, etc

J'ai créé un point de vue qui a un distinct dans la clause select.

Quand j'essaie de sélectionner tous les enregistrements "select * from view" j'obtiens l'erreur suivante:

ORA-01446: cannot select ROWID from view with DISTINCT, GROUP BY, etc.

J'étais à la recherche pourquoi cela se produit et est venu à ceci:

Vous avez essayé de créer une vue qui inclus un ROWID dans l'instruction SELECT, ainsi qu'une clause comme DISTINCTE ou un GROUPE PAR. Ce n'est pas autorisé. Référence

C'est étrange parce que l'sélectionnez stament dans la vue n'sélectionne le rowid et il n'est pas utilisé dans toute autre clause where, order, etc..)

Toute idée de ce?

Mise à jour

Je ne suis pas en mesure de publier la requête elle-même, mais je poste un look-a-like. Ici, il est:

SELECT DISTINCT t1.c1 TABLE1_C1,
t1.c2 TABLE1_C2,
t1.c3 TABLE1_C3,
t1.c4 TABLE1_C4,
t1.c4 TABLE1_C4,
t1.c5 TABLE1_C5,
t1.c6 TABLE1_C6,
t1.c7 TABLE1_C7,
t1.c8 TABLE1_C8,
t2.c1 TABLE2_C1,
t2.c2 TABLE2_C2,
t2.c3 TABLE2_C3,
t2.c4 TABLE2_C4,
t2.c5 TABLE2_C5,
t3.c1 TABLE3_C1,
t2.c6 TABLE2_C6,
t4.c1 TABLE4_C1,
t4.c2 TABLE4_C2,
t4.c3 TABLE4_C3
  FROM table1 t1
  LEFT JOIN table2 t2
  ON t1.c1 = t2.c7
  left JOIN table4 t4
  ON t4.c4 = t2.c1
  LEFT JOIN table3 t3
  ON (t2.c1 = t3.c2
  AND t2.c8 = t3.c3
  AND t2.c9 = t3.c4)
  WHERE (t2.cp5  = 0 or t2.cp5 is null)
  AND (t2.c3  =
    (SELECT MAX(c3)
    FROM table2 s_t2
    WHERE s_t2.c3 LIKE t2.c3
    AND s_t2.c7 = t1.c1
    ) or t2.c3 is null)
Pourriez-vous svp poster votre définition de la vue?
Quel langage/ framework/ application utilisez-vous pour l'exécution de la requête? Il est relativement fréquent qu'une bibliothèque pour essayer d'ajouter un ROWID à la SELECT déclaration de transparence pour s'assurer qu'il n'y est une clé unique pour chaque ligne du résultat. Normalement, toutefois, la bibliothèque de gérer le cas que ROWID ne peut être valablement ajouté à la requête avec plus de grâce, cependant.
Dans le code (java, jdbc6) toutes les requêtes à la vue fonctionnent parfaitement (aussi parce que je ne suis pas en utilisant * dans une requête). Cette erreur est dans SQLDeveloper. Peut-être que le "problème" est que, il essaie de sélectionner l'id de ligne de manière transparente...
Je ne suis pas en mesure de publier la requête elle-même, mais je peux poster un look-a-like
Que ça vous aidera

OriginalL'auteur Miguel Ribeiro | 2012-03-21