今どき、Oracle7.x.xバージョンを使っている人はそうそういないと思うけど、僕たちは使っている。ちなみに最新パージョンはOracle Database 18cだ。すごい、かっこいい。
何をしたかったかというと、VBAでOracleDBからテーブルを結合して情報を取得したかったです。取得しようと実行すると、エラーを吐かれました。
目次
[ORAエラー] ORA-00933: SQLコマンドが正しく終了されていません。
その後、いろいろ試行錯誤してるとエラーが変わりました。
[ORAエラー] ORA-00936: 式がありません
これば単純なSQLの間違いではないのか?と思い調べてみるとOracleのバージョンの古さが原因で、本来ならば実行できるクエリを理解してくれていませんでした…。
やろうとしたこと
select
*
from
A
left outer join B
on A.col1 = B.col1
where
B.col2 = ‘b’
;
テーブルを結合して、条件をしてして取得です。これがエラーになったよ…。
やったこと
select
*
from
A,B
where
A.col1 = B.col1(+)
andB.col2 = ‘b’
;
Oracleでは「(+)」を用いて外部結合することができるということでした。Oracle独自の落とし穴ですね。(+)を使用して、結合条件を書き直してやればすんなり通りました。
古いバージョンのOracle Databaseを使っていて、結合で躓いたら(+)を使いましょう。
コメントを書く