2

一括挿入を行うこの例を見て、更新にも同じロジックを使用できると思いました。私はそれが機能するかどうかを確認するために次のことを試みましたが、機能しません:

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();

これは更新には機能しませんか? リンクした例で一括挿入が実行されるのと同様に、一括更新を簡単に行う方法はありますか?

4

2 に答える 2

1

パラメータ名を反転させたことがわかりました。それを見つけるために私を永遠に連れて行った。

于 2012-09-18T15:24:44.820 に答える
0

配列をパラメーターとして渡すことはできません。

できることは、配列をループして、配列の各位置の更新を呼び出すことです (実際には「一括」挿入ではありません)。または、次のようなものを使用できます。

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

等々

于 2012-09-18T14:30:02.170 に答える