【问题标题】:Multiple Result Sets with Oracle使用 Oracle 的多个结果集
【发布时间】:2018-12-17 08:40:52
【问题描述】:

简单的问题:

我的代码如下所示:

        var con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.20.10.8)(PORT=1521))(CONNECT_DATA=(SID=orcl12c)));");
        con.Open();

        var adp = new OracleDataAdapter("select * from adr;select * from person;", con);
        var ds = new DataSet();
        adp.Fill(ds);

现在我希望在 DataSet 中获得两个表,但我宁愿得到一个异常,告诉我 SQL 语法不正确......看起来 ;那样不被认出来..?有什么想法吗?

编辑 #1:另外添加 BEGIN+END; 不起作用(多种变体)

编辑 #2:使用 execute immediate 包装选择将运行,但不会返回结果集。

解决方案:将提供的答案与Using Dapper with Oracle stored procedures which return cursors 结合起来享受。

【问题讨论】:

标签: c# oracle ado.net


【解决方案1】:

您应该编写一个匿名的pl/sql 块,返回ref cursors

ADO.NET试试这个:

    oraConnection = new OracleConnection();
    da = new OracleDataAdapter();
    ds = new DataSet();

    oraConnection.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.20.10.8)(PORT=1521))(CONNECT_DATA=(SID=orcl12c)));";
    cmdText = "begin open :1 for select * from adr; open :2 for select * from person; end;"; 
    cmd = new OracleCommand();
    cmd.CommandText = cmdText;
    cmd.Connection = oraConnection;
    cmd.CommandType = CommandType.Text; 

    OracleParameter refcur1 = cmd.Parameters.Add("Refcur", OracleDbType.RefCursor);
    refcur1.Direction = ParameterDirection.Output;
    OracleParameter refcur2 = cmd.Parameters.Add("Refcur", OracleDbType.RefCursor);
    refcur2.Direction = ParameterDirection.Output;

        da.SelectCommand = cmd;
        da.Fill(ds);

【讨论】:

  • 如前所述,它与 oracle 相关。 @HasanFathi 你的答案有效,但我希望有一个纯 SQL 的解决方案,所以我不需要处理参数。为什么?因为我想使用 Dapper,它适用于纯字符串语句和连接。
  • @Jaster 我对ADO.NET 的解决方案,在Dapper.NET 你可以使用QueryMultiple
  • @Jaster in ADO.NEt 你应该使用我建议的方法
  • @Jaster 你想要的功能不是通过纯 sql 处理的,你想要一个解决方案来获取从 sql 返回的与 dapper 或 ado 相关的多个结果
  • 别担心,我会接受答案... QueryMultiple 将不起作用,因为它只接受字符串,而不是命令...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多