0
string sql = @"SELECT sum(subtotal) FROM table1 WHERE clientid=:v1;" +
"SELECT * FROM table2  WHERE clientid = :v2 "
cmd = DBConnection.GetCommand(); 
cmd.CommandText = sql;
cmd.Parameters.Clear();
cmd.Parameters.Add(":v1", "Name1");
cmd.Parameters.Add(":v2", "Name2");
OracleDataReader reader = cmd.ExecuteReader(); //Error: Invalid Character
while (reader.Read())
{
  ..results from first query
}
reader.NextResult();
while (reader.Read())
{
  ..results from second query
}

.NETはバインディング変数を使用したreader.NextResultsを許可していませんか? 無効な文字が表示されるのはなぜですか??

4

1 に答える 1

4

:コマンドにパラメーターを追加するときは、 を削除します。

cmd.Parameters.Add("v1", "Name1");
cmd.Parameters.Add("v2", "Name2");

OracleCommand.Parameters プロパティ

CommandType.Text の OracleCommand によって呼び出される SQL ステートメントで名前付きパラメーターを使用する場合は、パラメーター名の前にコロン (:) を付ける必要があります。ただし、ストアド プロシージャ内で、またはコード内の他の場所で名前付きパラメータを参照する場合 (たとえば、 OracleParameter オブジェクトを Parameters プロパティに追加する場合) は、名前付きパラメータの前にコロン (:) を付けないでください。.NET Framework Data Provider for Oracle は、コロンを自動的に提供します。

于 2013-09-16T13:06:12.777 に答える