SAK 図書館
VB oo4o + SQL 応用編6 oo4o 更新 - CreateSql、バッチ更新
oo4o は、Oracle RDBMS でみ使用可能です。 ■CreateSql でのバッチ更新 ・CreateSql で、バインド配列(OraParamArray)を使用してバッチ更新が できる。これは便利に使用できる。 ■現実的なコード例 Option Explicit '** oo4o 変数宣言 dim OraSession dim OraDatabase dim OraSqlStmt dim OraPArray(3) dim BachRowMax as long '======================================================================= ' 準備 '======================================================================= Private Sub Form_Load() dim dbname as string dim cnuser as string '** エラートラップ開始 on local error resume next '** アイキャッチ表示 'Load FormLogo 'FormLogo.Show 'DoEvents '// 接続に 10 秒ほどかかるので、「データベース接続中...」などの '// モードレスダイアログを表示すると良い。 '** サービス、ユーザ設定 dbname = "" cnuser = "SAK/SAK" '// Oracle サービス名(別名)、ユーザ・パスワード指定 '** oo4o 接続 Set OraSession = CreateObject("OracleInProcServer.XOraSession") if err <> 0 then MsgBox "データベースに接続出来ません。" & chr(10) _ & "CreateObject - Oracle oo4o エラー" end end if Set OraDatabase = OraSession.OpenDatabase(dbname, cnuser, ORADB_DEFAULT) if err <> 0 then MsgBox "データベースに接続出来ません。" & chr(10) _ & err & ": " & error end end if '** パラメタ追加 BachRowMax = 10 OraDatabase.Parameters.AddTable "キー", ORAPARM_INPUT, ORATYPE_CHAR, BachRowMax, 4 OraDatabase.Parameters.AddTable "データ1", ORAPARM_INPUT, ORATYPE_NUMBER, BachRowMax OraDatabase.Parameters.AddTable "データ2", ORAPARM_INPUT, ORATYPE_NUMBER, BachRowMax OraDatabase.Parameters.AddTable "データ3", ORAPARM_INPUT, ORATYPE_NUMBER, BachRowMax if err <> 0 or OraDatabase.LastServerErr <> 0 then MsgBox "パラメタ追加に失敗しました。" & chr(10) _ & err & ": " & error & chr(10) _ & "oo4o: " & OraDatabase.LastServerErrText end end if '** パラメタ配列準備 set OraPArray(0) = OraDatabase.Parameters("キー") set OraPArray(1) = OraDatabase.Parameters("データ1") set OraPArray(2) = OraDatabase.Parameters("データ2") set OraPArray(3) = OraDatabase.Parameters("データ3") '** アイキャッチ終了 'Unload FormLogo '// 接続が完了すれば、「データベース接続中...」をクローズする。 '** エラートラップ終了 on local error goto 0 End Sub '======================================================================= ' 後始末 '======================================================================= Private Sub Form_Unload(Cancel As Integer) '** パラメタ解消 OraDatabase.Parameters.Remove "キー" OraDatabase.Parameters.Remove "データ1" OraDatabase.Parameters.Remove "データ2" OraDatabase.Parameters.Remove "データ3" '** パラメタクエリ解消 Set OraSqlStmt = Nothing '** oo4o 接続解除 Set OraDatabase = Nothing Set OraSession = Nothing End Sub '======================================================================= ' メイン '======================================================================= Private Sub Command1_Click() '** RDB 処理 if RdbShori(OraDatabase) then msgbox "RDB 更新正常終了。 (処理件数= " & OraSqlStmt.RecordCount & ")" end if End Sub '======================================================================= ' RDB 処理 '======================================================================= private function RdbShori(OraDatabase) as boolean dim i as long '** エラーセット RdbShori = FALSE '** エラートラップ開始 on local error resume next '** oo4o エラーリセット OraDatabase.LastServerErrReset '** テストデータ作成 for i = 0 to BachRowMax - 1 OraPArray(0).Put_Value Format(Int(Rnd(1) * 1000), "0000"), i OraPArray(1).Put_Value Int(Rnd(1) * 1000), i OraPArray(2).Put_Value Int(Rnd(1) * 1000), i OraPArray(3).Put_Value Int(Rnd(1) * 1000), i next '** トランザクション開始 OraSession.BeginTrans '** RDB 処理1 Set OraSqlStmt = OraDatabase.CreateSql("insert into sak.テストm " _ & "(キー, データ1, データ2, データ3) values " _ & "(:キー, :データ1, :データ2, :データ3)", ORASQL_DEFAULT) if err <> 0 or OraDatabase.LastServerErr <> 0 then OraSession.Rollback MsgBox "RDB 更新1 に失敗しました。" & chr(10) _ & err & ": " & error & chr(10) _ & "oo4o: " & OraDatabase.LastServerErrText exit function end if '** トランザクション終了 OraSession.CommitTrans '** エラートラップ終了 on local error goto 0 '** 正常セット RdbShori = TRUE end function ■説明 ・Parameters.Add の代わりに Parameters.AddTable を使用して次元数を指定 する。ここでは、BachRowMax = 10 を使用している。 OraPArray と関連付けて、実際のデータをテストなので乱数でセット。 CreateSql を実行すると、10 件の更新が行われる。 ・OraPArray から、値を参照するには、Get_Value を使用する。 OraPArray.LastErrorText もある。 ■VB oo4o + SQL 応用編資料
■VB ADO + SQL 応用編資料
■VB RDO + SQL 応用編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料
■VB テクニック編資料