この不穏なエラーに遭遇しました。C# で ODP.NET を使用して、単純な SQL クエリを実行しようとしています。パラメータを名前で渡します (コマンドの BindByName=true を設定)。クエリでは、「tid」という名前のパラメータを 1 つ使用します。このパラメーターのみをコマンドのパラメーター コレクションに追加すると、すべて問題ありません。クエリで使用されていない別のパラメーターを追加すると、クエリがクラッシュし、このエラー メッセージが表示されます。
ORA-01036: illegal variable name/number
コードは次のようになります
using( var conn = new OracleConnection([some connection string]) )
{
conn.Open();
using( var comm = conn.CreateCommand() )
{
// using only the :tid parameter.
comm.CommandText = "SELECT column FROM Table T WHERE T.Id = :tid";
comm.CommandType = CommandType.Text;
comm.BindByName = true;
comm.Parameters.Add("tid", 500000207);
// This extra parameter causes an exception when the query is executed.
// If I remove it everything runs smoothly
comm.Parameters.Add("param2", "ValueOfSecondParam");
comm.ExecuteNonQuery();
}
}
例外を取得せずに、クエリで実際に使用されているよりも多くのパラメーターを渡すにはどうすればよいですか? (クエリを動的に作成するとしますが、渡すパラメーターを制御しないため、最初にすべてのパラメーターを渡す必要があります)