使用ODP.NET进行Oracle批量更新

时间:2012-09-17 17:50:47

标签: c# .net oracle odp.net

查看this example进行批量插入,我假设使用相同的逻辑可用于更新。我尝试了以下内容,看看它是否可行,但它没有:

string sql = "update TEST set NAME=:newName where NAME=:name";

connection.Open();
OracleCommand command = connection.CreateCommand();
command.CommandText = sql;
command.CommandType = System.Data.CommandType.Text;
command.BindByName = true;

command.ArrayBindCount = 5;

string[] originalName = { "Test1", "Test2", "Test3", "Test4", "Test5" };
string[] newName = { "New Test1", "New Test2", "New Test3", "New Test4", "New Test5" };

command.Parameters.Add(":newName", OracleDbType.Varchar2, originalName, System.Data.ParameterDirection.Input);
command.Parameters.Add(":name", OracleDbType.Varchar2, newName, System.Data.ParameterDirection.Input);

command.ExecuteNonQuery();
connection.Close();

这不适用于更新吗?有没有办法轻松地进行批量更新,类似于如何在我链接的示例中执行批量插入?

2 个答案:

答案 0 :(得分:1)

事实证明我的参数名称已被翻转。让我永远找到它。

答案 1 :(得分:0)

你不能将数组作为参数传递。

你可以做的是遍历你的数组并为数组的每个位置调用更新(这不是真正的“批量”插入),或者你可以使用类似的东西:

WHERE NAME in ("Test1", "Test2", "Test3", "Test4", "Test5") 

等等