Qu'est-ce qui pourrait causer une expression manquante ORA-00936 avec le code SQL suivant

StackOverflow https://stackoverflow.com/questions/249865

  •  05-07-2019
  •  | 
  •  

Question

Nous voyons le message d'erreur ORA-00936 Expression manquante pour le code SQL suivant:

Notez qu'il ne s'agit que d'une version simplifiée d'un code SQL beaucoup plus volumineux. Il est donc inutile de le réécrire dans une jointure interne ou similaire.

Voici le code SQL qui échoue:

select (select count(*) from gt_roster where ROS_ROSTERPLAN_ID = RPL_ID)
from gt_rosterplan
where RPL_ID = 432065061

Ce que j'ai essayé: * Extraire le SQL le plus interne et substituer l’ID du SQL externe m’a donné le numéro 12. * L'aliasing à la fois de la sous-requête et du nombre (*) individuellement et des deux en même temps ne modifie pas le résultat (c'est-à-dire qu'il s'agit toujours d'une erreur)

Que dois-je regarder d'autre?

Les éléments ci-dessus ne sont que des tables, pas de vues, RPL_ID est la clé primaire de gt_rosterplan et ROS_ROSTERPLAN_ID est une clé étrangère pour cette colonne. Il n'y a pratiquement aucune information magique ou cachée ici.

Modifier: En réponse à la question, non, vous n'avez pas besoin des alias ici car les colonnes sont nommées de manière unique dans les tables.

Résolu: Le problème était que le client exécutait la version de pilote client incorrecte, 9.2.0.1, et que cette version présentait des problèmes connus.

Était-ce utile?

La solution

Cela devrait fonctionner, à condition que les noms de colonnes ne soient pas ambigus (et même s'ils le faisaient, cela entraînerait une erreur différente). J'ai exécuté une instruction équivalente et obtenu un résultat sans erreur:

SQL> select (select count(*) from emp2 where empdeptno = deptno)
  2  from dept
  3  where deptno=10
  4  /

(SELECTCOUNT(*)FROMEMP2WHEREEMPDEPTNO=DEPTNO)
---------------------------------------------
                                            3

Google semble avoir détecté des bogues dans Oracle entraînant des erreurs ORA-00936 - voir ceci par exemple .

Autres conseils

Le problème était que le client exécutait la mauvaise version de pilote du client, 9.2.0.1, et que cette version présentait des problèmes connus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top