Oracle7でテーブル結合する為の独自のクエリはこれ!

Oracle7でテーブル結合する為の独自のクエリはこれ!

f:id:AoiKugayama:20200219185424j:plain

今どき、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(+)
and

B.col2 = ‘b’
;

Oracleでは「(+)」を用いて外部結合することができるということでした。Oracle独自の落とし穴ですね。(+)を使用して、結合条件を書き直してやればすんなり通りました。

古いバージョンのOracle Databaseを使っていて、結合で躓いたら(+)を使いましょう。

Databaseカテゴリの最新記事