0

次の SQL のエラー メッセージ ORA-00936 Missing Expression が表示されます。

これは、はるかに大きな SQL の単純なバージョンであるため、内部結合などに書き換えることは、実際にはこの範囲内ではないことに注意してください。

これは失敗する SQL です。

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

私が試したこと: * 最も内側の SQL を抽出し、外側の SQL から ID を代入すると、12 という数字が得られます。結果 (つまり、まだエラー)

他に何を見る必要がありますか?

上記はテーブルのみで、ビューはありません。RPL_ID は gt_rosterplan の主キーであり、ROS_ROSTERPLAN_ID はこの列の外部キーです。ここには基本的に魔法や隠し情報はありません。


編集:回答に応じて、いいえ、列はテーブル全体で一意に名前が付けられているため、ここではエイリアスは必要ありません。


解決済み:問題は、クライアントが間違ったクライアント ドライバー バージョン 9.2.0.1 を実行していたことであり、そのバージョンには既知の問題があります。

4

2 に答える 2

3

問題は、クライアントが間違ったバージョンのクライアント ドライバー 9.2.0.1 を実行していたことであり、そのバージョンには既知の問題があります。

于 2009-01-27T09:04:23.283 に答える
1

列名があいまいでないと仮定すると、それは機能するはずです(たとえそれらが別のエラーにつながる場合でも)。同等のステートメントを実行したところ、エラーなしで結果が得られました。

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

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

グーグルで検索すると、ORA-00936 エラーの原因となる Oracle のバグが存在するか、存在していたようです。たとえば、これを参照してください。

于 2008-10-30T11:49:03.950 に答える