Tech Assist

TECH & LIFE in NAGOYA

名古屋エリアでのフリーランスエンジニアとしての活動記録。

2018年12月21日

OracleのSQL動作確認はSQL*Plusでやりましょう

長いことOracleを使ってる方からしたら当たり前の事なんですが、SQLの動作確認はSQL*Plusでやらないとハマることがあります。
開発でよく使うSQL DeveloperにもSQLを実行して一覧表示する機能があってとても便利なんですが、実はこのツールの実行結果を100%信用しちゃダメなんです。

同じSQLをSQL Developerで実行すると問題なく結果が表示されるのにSQL*Plusで実行するとエラーなんてことがあります。
SQL Developerはとにかく結果を見ることを優先してSQLの構文に寛容に作られているのだと思います。

私もこの事についてはかなり昔から知っていたのですが、今回Laravelのクエリービルダーから発行したSQLがエラーになるのでSQLをダンプしてSQL Developerで確認したら問題ないという現象で30分くらい悩んでしまいました(^^;
理屈を知っていても久々に現象に出くわすと意外と気が付けなかったりするんですよね。。
今回ハマった時も最初はDBファサードのDB::rawって実は素のSQL発行してないんじゃ?なんてアホな方向に疑いをかけてしまいましたw

ハマったら基本に帰る。鉄則ですね。

2018年12月10日

Oracle SQL Developerを使いやすく設定する

SQL DeveloperはOracleで開発を行っていると必ず使うと思いますが、初期設定だとちょっと使いにくいです。
今まであまり気にせず使っていましたがどう考えても非効率なのでちゃんと設定して使いやすくしておきましょう。

タブを複数表示する

初期設定だとサイドメニューのテーブル名を選択した時に1つのタブの中身の表示が切り替わるようになっています。
状態を維持したまま複数テーブルのデータを見比べたいことが多いのでこれだととても不便です。
テーブル名を選択した時に新しいタブが開くように出来ます。


  1. メニューから ツール > プリファレンス を選び、ダイアログを開く。
  2. 左の一覧から データベース > Object Viewer を選択。
  3. 「オブジェクト・ビューア・ウィンドウの自動固定」にチェックを入れる。


日付型(DATE型)の項目を時分秒まで表示する

DATE型って年月日だけじゃなくて時分秒までデータをもっているのにSQL Developerの初期設定だと年月日までしか表示されません。
これでは時分秒が分からないので表示フォーマットを設定し直します。

  1. メニューから ツール > プリファレンス を選び、ダイアログを開く。
  2. 左の一覧から データベース > NLS を選択。
  3. 日付書式をRR-MM-DD HH24:MI:SSに変更する。