在单个数据库调用中执行多个查询 - SQL

时间:2011-06-23 08:46:01

标签: sql database oracle call

我正在使用从数据库(Oracle)检索的数据创建pdf报告。对于每个报告,我正在进行数据库调用。我想优化多个报告的调用(最多可以有500个报告)。在当前场景中,我正在进行500次DB调用,这会导致服务器超时       我正在寻找解决方案和答案       的 1 即可。我可以将数据列表作为输入传递给查询吗? (查询需要2个输入。)
      的 2 即可。整套数据检索应该在1个DB呼叫中进行,而不是500个单独的呼叫        3 即可。响应应该是500输入的累计结果 请提出解决方法或解决问题的方向?

这是一个基于Java的系统。数据库调用来自Web应用程序。 DB:Oracle。

谢谢!

2 个答案:

答案 0 :(得分:3)

如果你想在单个数据库调用中获取任意数量的“报告”的数据,那么我想你需要调用一个存储过程,它返回一个非常大的XML或JSON文本块,你可以然后解析并显示在您的应用程序中。 Oracle具有用于构造XML的内置函数,并且JSON很容易构建自己(虽然我相信可以使用第三方PL / SQL JSON包)。

答案 1 :(得分:2)

有几种方法可以合并多个查询的结果。

  1. UNION ALL - 允许您在query1 UNION ALL query2
  2. 之间实际组合结果
  3. 再提出1个常规查询。 - 如果可以的话,这是最好的答案。
  4. 加入子查询并水平打印,如果可以加入它们。从(querya)选择一个。,b。一个关于(id)的连接(queryb)b
  5. 可能还有其他方法。如存储过程等。