我正在开发一个与 Oracle 数据库通信的 C#应用程序。
在我的应用程序中,用户从列表中选择多个项目,并请求与这些所选项目相关的数据的报告/摘要。
我正在尝试将这些项ID的列表/数组传递给数据库,以根据它们过滤结果集。我已经可以选择在运行时构建我的查询,但如果存在,我宁愿使用更好的解决方案。
关于性能和灵活性的最佳方法是什么?
欣赏它。
答案 0 :(得分:1)
您可以使用Linq To Sql执行此操作,但请注意,您将限制为2100的数组大小。
答案 1 :(得分:0)
如果您有权访问linq,我相信这会对您有所帮助。 http://www.albahari.com/nutshell/predicatebuilder.aspx
答案 2 :(得分:0)
我假设你需要帮助创建一个列表的程序(如果我错了,请纠正我)。从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;