ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

sqlplus -l

SQL*Plusで、ファイルに書いてあるSQL文を実行して、その結果をファイルに落としたいとき、SQL*Plusのバージョンバナーを避けるため、-sオプションを付けて、
sqlplus -s userid/password@netservicename @sqlfile
みたいな書き方をするのですが、実はこれ、大きな落とし穴があります。上記形式でなく、普通に対話モードでsqlplusを起動すると分かるのですが、useridとかpasswordが間違っていると、「ちゃんと入れろよ!」的にプロンプトが出てくるんですね。しかし、SQLファイルを実行するモードだと、どこか裏側でプロンプトが出ているらしく、一向に処理が進まなくなります。で、これを回避するには、-lオプションってのが使えるのです。これは、一度しかログインを試みないというもので、つまり、再ログインのプロンプトを表示しないのです。というわけで、以下の形式が望ましいといえます。
sqlplus -s -l userid/password@netservicename @sqlfile