使用Oracledatareader获取多个记录集 - c#

时间:2011-03-17 17:59:14

标签: c# oracle recordset datareader

sql变量可能包含多个sql语句...我在执行命令cmd.ExecuteReader()....时收到错误(无效字符)。

的伪:

....
string sql = @"SELECT * FROM table1 WHERE col1=:p1;" +
"SELECT MAX (col3) FROM table2  WHERE col2 = :p2 "
cmd = DBConnection.GetCommand(); // Get the connection
cmd.CommandText = sql;
cmd.Parameters.Clear();
cmd.Parameters.Add(":p1", "Somevalue1");
cmd.Parameters.Add(":p2", "somevalue2");
OracleDataReader reader = cmd.ExecuteReader(); //Error: Invalid Character

if (reader.HasRows)
{
 reader.Read();
........
}

reader.NextResult();

.....

1 个答案:

答案 0 :(得分:2)

AFAIK Oracle不允许以这种方式执行多个SQL语句。有时你可以通过将SQL语句包装在PL / SQL匿名块中来解决它,例如: “BEGIN SELECT ...; SELECT ...; END;”,但是你需要在SELECT上使用带有绑定变量的INTO子句作为目标,以便在调用代码中访问查询结果。