- PR -

[ASP.NET]ODP.NETにてバインド変数を使用してUPDATEすると更新できない。

1
投稿者投稿内容
けん@ぼう
会議室デビュー日: 2003/10/09
投稿数: 3
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)