teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

修正

2018/03/30 05:45

投稿

Kiri_Tanpo
Kiri_Tanpo

スコア13

title CHANGED
File without changes
body CHANGED
@@ -322,7 +322,9 @@
322
322
 
323
323
  ### 補足情報(FW/ツールのバージョンなど)
324
324
  設定ファイルに下記のようにInsert文の雛形をおいています。
325
+ ```sql
325
326
  CSVファイル名=INSERT INTO "テーブル名" ("カラム名1","カラム名2",‥) values (?,?,‥)
327
+ ```
326
328
  cmdファイルをたたいてVBSを呼び出しています。
327
329
  設定ファイル内のCSVファイル名とディレクトリ内のCSVファイルを比較して、マッチングしたらInsert文を引っ張ってきて、CSVファイルの読込を始め、上記問題のソースでパラメータに実際のデータをセットしています。
328
330
 

1

追記

2018/03/30 05:45

投稿

Kiri_Tanpo
Kiri_Tanpo

スコア13

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  OracleDBにADODB経由でアクセスし、バインド変数でカラムデータを指定して、
5
5
  Insert文を実行しています。
6
- データ型がNumberのカラムに空白でない文字列を指定すると、エラーを取得したい。
6
+ データ型がNumberのカラムに空白でない文字列を指定すると、Nullが入ってまう原因を知りたい。
7
7
 
8
8
  ### 発生している問題・エラーメッセージ
9
9
  データ型がNumberのカラムに空白でない文字列を指定すると、
@@ -196,15 +196,29 @@
196
196
    '------------------------------------------------------------'
197
197
    ' SQL実行時エラーの確認
198
198
    '------------------------------------------------------------'
199
+ ~追記~
199
200
    If Err.Number <> 0 Then
200
201
     '--------------------------------------------------------'
201
202
     'SQLエラー情報のログ出力
202
203
     '--------------------------------------------------------'
204
+    Set objADOErrItem = objADO.Errors.Item(0)
203
-    ~SQLエラーログ出力~
205
+    ~エラーログ出力~
206
+    If objADOErrItem.NativeError = "ORA-00060" Then
207
+     END_CODE = ERR_DeadLouk
208
+    Else
209
+     END_CODE = ERR_SQL
210
+    End If
211
+    Set objADOErrItem = Nothing
204
212
     '--------------------------------------------------------'
205
213
     'INSERT失敗処理
206
214
     '--------------------------------------------------------'
215
+    objCsvDataFile.Close
216
+    objADO.RollbackTrans
217
+    Call NgInsert( objDataFile.Path )
218
+    ExitProc ( END_CODE )
219
+    objCMD.Close
220
+    Set objCMD = Nothing
207
-    ~~
221
+    Exit Do
208
222
    End If
209
223
    Set objCMD = Nothing
210
224
    ' CSV読込カウンタ
@@ -234,7 +248,21 @@
234
248
  '---------------------------------------------------------------------
235
249
  ' エラー処理関数
236
250
  '---------------------------------------------------------------------
251
+ ~追記~
252
+ Sub ExitProc(END_CODE)
253
+  'データベースを閉じる
254
+  objCMD.Close
255
+  objCsvDataFile.Close
256
+  If CONTROL_FLAG = 0 Then
257
+   objADO.Close
258
+   Set objDataFile = Nothing
259
+   Set objDataFolder = Nothing
260
+   Set objFSO = Nothing
261
+   Set objLogFile = Nothing
237
- ~オブジェクトをClose、破棄し、終了コードをBatchに返す~
262
+   Set objCsvDataFile = Nothing
263
+   WScript.Quit(END_CODE)
264
+  End If
265
+ End Sub
238
266
  '---------------------------------------------------------------------
239
267
  ' INSERT成功処理
240
268
  '---------------------------------------------------------------------