Ce qui pourrait causer un ORA-00936 - Manque d'Expression avec le sql suivant?
Nous voyons le message d'erreur ORA-00936 Manque d'Expression de la requête SQL suivante:
Remarque que c'est juste un coupe-bas version de un beaucoup plus grand SQL afin de la réécrire à une jointure interne ou similaire n'est pas vraiment dans le champ d'application de cette:
C'est le 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é:
* L'extraction de l'essence la plus intime de SQL et de le remplacer par l'ID de l'extérieur SQL me donne le numéro 12.
* Aliasing à la fois la sous-requête, et le count(*) individuellement et les deux en même temps ne change pas le résultat (c'est à dire. encore une erreur)
Quoi d'autre dois-je regarder?
Ce ne sont que des tables, pas de points de vue, RPL_ID est la clé primaire de gt_rosterplan, et ROS_ROSTERPLAN_ID est une clé étrangère à cette colonne, il n'y a fondamentalement pas de magie ou de l'information cachée ici.
Edit: En réponse à la réponse, non, vous n'avez pas besoin de l'alias ici que les colonnes sont nommées uniques sur les tables.
Résolu: Le problème est que le client était en cours d'exécution dans le mauvais client de la version du pilote, 9.2.0.1, et il y a des problèmes connus avec cette version.
Vous devez vous connecter pour publier un commentaire.
Qui devrait fonctionner, en supposant que les noms de colonnes ne sont pas ambigus (et même si elles l'étaient, qui aboutirait à une erreur). J'ai exécuté une instruction équivalente et a obtenu un résultat sans erreur:
Googler il semble que le sont ou l'ont été, Oracle bugs menant à ORA-00936 erreurs - voir ceci par exemple.
Le problème est que le client était en cours d'exécution dans le mauvais client de la version du pilote, 9.2.0.1, et il y a des problèmes connus avec cette version.