抓取使用Oracledatareader多个记录 - C#
问题描述:
SQL变量可以包含比SQL语句更多...我收到错误(无效字符)在执行命令cmd.ExecuteReader()....抓取使用Oracledatareader多个记录 - C#
的伪:
....
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();
.....
答
AFAIK Oracle不允许以这种方式执行多个SQL语句。有时您可以通过将SQL语句包装在PL/SQL匿名块中来绕过它,例如“BEGIN SELECT ...; SELECT ...; END;”,但是你需要在绑定变量的SELECTs上使用INTO子句作为目标,以便访问调用代码中的查询结果。
有问题吗? – chris 2011-03-17 18:01:33
非常非常好的代码,并且充满语法错误('........')。但我必须关闭它。 – 2011-03-17 18:07:54
是的,我同意Radek,这不会编译。 – Cyberdrew 2011-03-17 18:10:15