【问题标题】:Pass a list/array of values to database and retrieve related record set将值列表/数组传递到数据库并检索相关记录集
【发布时间】:2011-07-06 13:28:17
【问题描述】:

我正在开发一个与 Oracle 数据库通信的 C# 应用程序。

在我的应用程序中,用户从列表中选择多个项目并请求与这些选定项目相关的数据的报告/摘要。

我正在尝试将这些项目 ID 的列表/数组传递给数据库,以根据它们过滤结果集。我已经可以选择在运行时构建查询,但如果存在更好的解决方案,我更愿意使用。

关于性能和心理素质的最佳方法是什么?

欣赏它。

【问题讨论】:

    标签: c# oracle plsql


    【解决方案1】:

    您可以使用 Linq To Sql 来执行此操作,但请注意,您将被限制为 2100 的数组大小。

    【讨论】:

    • 对不起,我刚刚注意到您正在使用 Oracle 和 Linq to Sql,令人沮丧的是只支持 Sql Server。
    【解决方案2】:

    如果您可以访问 linq,我相信这会对您有所帮助。 http://www.albahari.com/nutshell/predicatebuilder.aspx

    【讨论】:

    • 这篇文章有什么帮助??
    【解决方案3】:

    我假设您需要帮助来创建一个包含列表的过程(如果我错了,请纠正我)。在 Oracle 方面,您可能会执行以下操作:

    create or replace package my_package as
      ...
      type t_id_tab is table of my_table.id%type index by pls_integer;
      ...
      procedure do_work(i_ids in t_id_tab);
      ...
    end my_package;
    
    create or replace package body my_package as
    ...
    procedure do_work(i_ids in t_id_tab, o_affected_cnt out number) is
     begin
      forall i in i_ids.first..i_ids.last
    
        -- do something useful here, for example
    
        insert into some_table(col1, col2, col3)
        select col1, col2, col3 from some_other_table
        where id = i_ids(i);
    
        o_affected_cnt := SQL%ROWCOUNT;
    
        commit;
     end;
    end my_package;
    

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2020-06-26
      相关资源
      最近更新 更多