実現したいこと
batファイルを起動してsqlplusでOracleデータベースに接続し、接続できなかったらその旨のメッセージを出力する。
発生している問題・分からないこと
エラーが表示されるかを確かめていたら、データベースへ接続できていないのに
接続出来たときに出力させるメッセージが出てしまう。
エラーメッセージ
error
1ERROR: 2ORA-01017: invalid username/password; logon denied 3 4 5SP2-0306: オプションが無効です。 6使用方法: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]] 7条件 <logon> ::= <username>[/<password>][@<connect_identifier>] 8 <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>] 9
該当のソースコード
batファイル
1@echo off 2setlocal enabledelayedexpansion 3chcp 65001 > nul 4set NLS_LANG=Japanese_Japan.AL32UTF8 5 6 7:: Oracle接続情報 8set HOST=******* 9set PORT=**** 10set SERVICE=**** 11 12set USER=*** 13set PASS=*** 14 15echo 接続テスト開始 16echo SELECT 1 FROM DUAL; | sqlplus -s %USER%/%PASS%@//%HOST%:%PORT%/%SERVICE% > result.log 2>&1 17 18if %ERRORLEVEL% NEQ 0 ( 19 echo データベースに接続できませんでした。 20) else ( 21 echo データベースに接続出来ました。 22) 23 24pause 25endlocal 26exit /b
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
あえてパスワードを間違えた状態でbatファイルを実行した結果、「データベースに接続出来ました。」
と表示されます。エラーメッセージは、result.logに出力されているものです。
Oracleに接続できている場合は、result.logにはエラーメッセージは出力されていませんでした。
初心者なので原因が分かりません、よろしくお願いします。
補足
ログイン失敗なら非ゼロが返ってきそうですが、コマンドオプションが無効というエラーなのでERRORLEVELがゼロなのではないでしょうか。環境変数で渡しているパラメータに特殊文字(記号とかスペースとか)が入っていたりしませんか?その場合エスケープしてやったり、クォートしてやる必要があると思います。

回答1件
あなたの回答
tips
プレビュー