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
のように、現在の日付が取得できると思います。