2018年10月22日月曜日

VBSCript Oracle接続

VBScript Oracle接続の例
' *********************************************************** ' Oracle 2 CSV ' ADO : 文字列更新 ' FileSystemObject : CSV出力 ' *********************************************************** strTarget = "Oracle11gMS" strUser = "lightbox" strPass = "LIGHTBOX" ' *********************************************************** ' ADO + FileSystemObject ' *********************************************************** Set Cn = CreateObject( "ADODB.Connection" ) Set Rs = CreateObject( "ADODB.Recordset" ) Set Fso = CreateObject( "Scripting.FileSystemObject" ) ' ********************************************************** ' 接続文字列 ' ********************************************************** ConnectionString = _ "Provider=MSDASQL" & _ ";DSN=" & strTarget & _ ";UID=" & strUser & _ ";PWD=" & strPass & _ ";" ' ********************************************************** ' 接続 ' クライアントカーソル(3)を使う事が推奨されます ' ********************************************************** Cn.CursorLocation = 3 on error resume next Cn.Open ConnectionString if Err.Number <> 0 then WScript.Echo Err.Description Wscript.Quit end if on error goto 0 Query = "select * from 社員マスタ" ' ********************************************************** ' レコードセット ' オブジェクト更新時はレコード単位の共有的ロック(3)を ' 使用します( デフォルトでは更新できません ) ' ※ デフォルトでも SQLによる更新は可能です ' ********************************************************** 'Rs.LockType = 3 on error resume next Rs.Open Query, Cn if Err.Number <> 0 then Cn.Close Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ********************************************************** ' 出力ファイルオープン ' ********************************************************** Set Csv = Fso.CreateTextFile( "社員マスタ.csv", True ) ' ********************************************************** ' タイトル出力 ' ********************************************************** Buffer = "" ' 社員コードと氏名のみ For i = 0 to 1 if Buffer <> "" then Buffer = Buffer & "," end if Buffer = Buffer & Rs.Fields(i).Name Next Csv.WriteLine Buffer ' ********************************************************** ' データ出力 ' ********************************************************** UpdateCnt = 0 Do While not Rs.EOF Buffer = "" Buffer = Buffer & Rs.Fields("社員コード").Value Buffer = Buffer & "," & Rs.Fields("氏名").Value ' 更新 strDay = (UpdateCnt mod 10) + 1 Query = "update 社員マスタ set 生年月日 = TO_DATE('2005/01/" & strDay & "')" Query = Query & " where 社員コード = '" Query = Query & Rs.Fields("社員コード").Value Query = Query & "'" Cn.Execute( Query ) Csv.WriteLine Buffer Rs.MoveNext UpdateCnt = UpdateCnt + 1 Loop ' ********************************************************** ' ファイルクローズ ' ********************************************************** Csv.Close ' ********************************************************** ' レコードセットクローズ ' ********************************************************** Rs.Close ' ********************************************************** ' 接続解除 ' ********************************************************** Cn.Close

0 件のコメント:

コメントを投稿