使用: .NET 4、ODP.NET 11.2.0.3.0、Oracle Database 10g リリース 10.2.0.3.0
私のdeleteステートメントが機能しない理由を突き止めようとしています。おそらく、ここにいる誰かが私を助けてくれるでしょう。
動作するコードは次のとおりです。
cmd = New OracleCommand("delete from u_parameters where pkey = :pkey and user_id = :user_id and computer is null", Con)
cmd.Parameters.Add("pkey", OracleDbType.NVarchar2).Value = "Test"
cmd.Parameters.Add("user_id", OracleDbType.Decimal).Value = 1
cmd.ExecuteNonQuery() ' -- this returns 1 as it should
動作しないコードは次のとおりです。
cmd = New OracleCommand("delete from u_parameters where pkey = :pkey and user_id = :user_id and computer = :computer", Con)
cmd.Parameters.Add("pkey", OracleDbType.NVarchar2).Value = "Test"
cmd.Parameters.Add("user_id", OracleDbType.Decimal).Value = 1
cmd.Parameters.Add("computer", OracleDbType.NVarchar2).Value = DBNull.Value
cmd.ExecuteNonQuery() ' -- this returns 0!!
機能しないとは、ステートメントは実行されますが、データベースで何も起こらないことを意味します (そして、ExecuteNonQuery の結果は 0 であり、影響を受ける行がないことを意味します)。ここで何が問題になるのか本当にわかりません。「コンピューター」パラメーター IsNullable を True に設定しようとしましたが、何も変わりません。
助けてください。