質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

3146閲覧

DB接続エラー時にOracleのメッセージを出力したい。

Kiri_Tanpo

総合スコア13

Oracle Database 11g

Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2018/03/27 09:42

編集2018/03/27 10:06

前提・実現したいこと

DB接続エラー時にOracleのメッセージを出力したい。

発生している問題・エラーメッセージ

①INSERT処理を開始します。 ②データベースに接続できませんでした。 ③INSERT処理はDB接続エラーにより異常終了しました。

②と③の間で、Oracleのエラーメッセージを出力させようとしているのですが、
うまく取得できていないのか、ログに出力できません。

該当のソースコード

vbs

1'-------------------------------------------' 2' DBコネクションの確立 3'-------------------------------------------' 4Err.Number = 0 5 6Dim Connection 7Dim objADODbConnErr 8 9Set objADO = CreateObject("ADODB.Connection") 10Connection = "Provider=OraOLEDB.Oracle;Data Source=" & DATABASE & ";User ID=" & DB_UID & ";Password=" & DB_PWD 11 12'タイムアウト時間 無制限 13objADO.ConnectionTimeout = 0 14objADO.Open Connection 15 16'CSVファイル挿入のため、トランザクション開始 17objADO.BeginTrans 18 19'DBコネクションが取得できない場合 20If Err.Number <> 0 Then 21 Set objADODbConnErr = objADO.Errors.Item(0) 22 objLogFile.WriteLine (codeDateTime & ": データベースに接続できませんでした。") 23① objLogFile.WriteLine (codeDateTime & ": NativeError(ORA):" & objADODbConnErr.NativeError) 24② objLogFile.WriteLine (codeDateTime & ": Description:" & objADODbConnErr.Description) 25③ objLogFile.WriteLine (codeDateTime & ": Number:" & objADODbConnErr.Number) 26 Set objADODbConnErr = Nothing 27 Set objADODbConnErr = Nothing 28 WScript.Quit( ERR_DbConnect ) 29End If 30

試したこと

この状況で、定数にしているOracleDBのパスワードを変えて接続できないようにしていますが、ソースコードの①~③のメッセージが出力されません。

補足情報(FW/ツールのバージョンなど)

Windows7
OracleDB 11g
VBScript
Batch cmdファイルでVBS呼び出し

Set objADODbConnErr = objADO.Errors.Item(0)

この部分でエラーコレクションの要素数が0で取得できていないようです。
接続は失敗しており、同状況にてcmdよりORA-01017が確実に発生しているのを確認済みです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/03/27 12:43

.BeginTransを取り敢えずコメントにしても状況は変わりませんか?
Kiri_Tanpo

2018/03/28 00:38

コメントにしたら、情報が拾えました。ありがとうございます。.BeginTransより手前に処理を持ってくるべきだったわけですね。
sazi

2018/03/28 00:45

Errオブジェクトは直前の情報なので。
Kiri_Tanpo

2018/03/28 00:49

なるほど。少し考えたら当然のことでしたね。お手数でなければ、回答に再度投稿していただけますか。ここだと解決済みにできないみたいなので。
guest

回答1

0

ベストアンサー

Errオブジェクトの実行時エラーに関する情報は実行した処理によって常に最新に更新されます。

提示のコードでエラーとなっているのは、

objADO.BeginTrans

の箇所だと思われる(接続が無いのに実行しようとしているエラー)ので、

objADO.Open Connection

の直後で行うようにして下さい。

投稿2018/03/28 00:56

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kiri_Tanpo

2018/03/28 00:57

すいません、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問