- - PR -
[ASP.NET]ODP.NETにてバインド変数を使用してUPDATEすると更新できない。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-10-09 21:17
こんばんは。
ODP.NETについて質問です。 バインド変数を使用してUPDATEを行うと正しくコミットは できるのですが、テーブルにデータが反映されません。 INSERTでは正しく登録できます。 Dim odpCmd As New OracleCommand Dim strSQL As String Dim bolExist As Boolean '接続コネクションの取得 odpCmd.Connection = コネクション 'パラメータ設定 Dim pKBN As OracleParameter = New OracleParameter("pKBN", OracleDbType.Varchar2) Dim pKEY1 As OracleParameter = New OracleParameter("pKEY1", OracleDbType.Varchar2) Dim pDATA1 As OracleParameter = New OracleParameter("pDATA1", OracleDbType.Varchar2) pKBN.Direction = ParameterDirection.Input pKEY1.Direction = ParameterDirection.Input pDATA1.Direction = ParameterDirection.Input strSQL = "SELECT COUNT(*) CNT FROM INV_KYOTSU WHERE " & _ " KBN =:pKBN" & _ " AND KEY1 =:pKEY1" pKBN.Value = "AAA" pKEY1.Value = "BBB" odpCmd.Parameters.Add(pKBN) odpCmd.Parameters.Add(pKEY1) Try odpCmd.CommandText = strSQL Dim odpRdr As OracleDataReader = odpCmd.ExecuteReader() If odpRdr.Read Then If odpRdr("CNT") > 0 Then bolExist = True '更新 Else bolExist = False '新規登録 End If End If odpRdr.Close() If bolExist Then strSQL = "UPDATE TABLE1" & _ " SET " & _ " DATA1 =:pDATA1," & _ " WHERE " & _ " KBN =:pKBN" & _ " AND KEY1 =:pKEY1" Else strSQL = "INSERT INTO TABLE1 VALUES(" & _ ":pKBN," & _ ":pKEY1," & _ ":pDATA1," & _ "Null,Null,Null,Null)" End If odpCmd.CommandText = strSQL pDATA1.Value = "CCCC" odpCmd.Parameters.Add(pDATA1) 'トランザクション開始 odpCmd.Connection.BeginTransaction() Try 'SQL文を実行する。 odpCmd.ExecuteNonQuery() If bolExist Then lblMessage.Text = "更新時メッセージ" Else lblMessage.Text = "新規時メッセージ" End If odpCmd.Transaction.Commit() Catch ex As Exception lblMessage.Text = ErrorToString() odpCmd.Transaction.Rollback() End Try Catch ex As Exception Me.lblMessage.Text = ErrorToString() Finally odpCmd.Dispose() End Try End Sub 長くなりましたが宜しくお願いします。 |
1