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 属性时),不要在命名参数前加上冒号 (:)。Oracle 的 .NET Framework 数据提供程序自动提供冒号。

于 2013-09-16T13:06:12.777 回答