【问题标题】:Fetching multiple recordset using Oracledatareader - c# [closed]使用 Oracledatareader 获取多个记录集 - c# [关闭]
【发布时间】:2011-03-17 17:59:13
【问题描述】:

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();

.....

【问题讨论】:

  • 非常非常好的代码,并且充满了语法错误 (........)。但我必须关闭它。
  • 是的,我同意 Radek 的观点,这不会编译。
  • @Cyber​​drew 可能 99% 的 Stack Overflow 问题中的所有代码都无法编译。这就是 Stack Overflow 的用途。 :)
  • 它只是一个suedo ...你不能直接编译...只是我想知道如何为多个记录集构建sql。

标签: c# oracle recordset datareader


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2019-09-25
    • 2017-08-26
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多