2019.4.15
2020.1.7

SELECT句のみでSQLを実行する(DUAL表の使用)

SQLの関数や一部の処理の動作確認を行う際、SELECT句のみのSQLを実行することが多いですが、OracleではFROM句を指定していない場合、エラーが発生します。

そういった時にどうするのかというと、Oracleではダミー用の表である「DUAL」をFROM句に指定して実行します。

FROM句がないSQLを実行した場合(エラー処理)

確認のため、現在の日付を取得するSQLをSELECT句のみで実行してみます。


SELECT SYSDATE;

上記のSQLを実行した場合、以下のエラー「ORA-00923: FROMキーワードが指定の位置にありません。」が発生して、正常な結果が返ってきません。


ORA-00923: FROMキーワードが指定の位置にありません。
00923. 00000 -  "FROM keyword not found where expected"

他のDBを経験したことがある人で初めてOracleを扱う場合、このエラー結果に『あれ、なんで実行できないの?』と、頭を捻ってしまうことが多いかと思います。私がそうでした。

FROMに「DUAL」を指定して実行した場合(正常処理)

OracleではSELECTのみで成立するSQLであっても、FROM句を指定しないといけません。こういった時に利用するのがDUALというダミー用の表で、SQLは以下のように記述します。


SELECT SYSDATE FROM DUAL;

上記のSQLを実行すると


19-04-15

のように、現在の日付が取得できると思います。

Oracle】関連記事