【问题标题】:What is the recommended practice for writing procedures with re-usable code?使用可重用代码编写程序的推荐做法是什么?
【发布时间】:2011-10-14 20:17:19
【问题描述】:

我想在这里与一些更有经验的 Oracle 开发人员一起了解后端开发的最佳实践。

我编写了很多以 XML 格式打印数据并被 HTTP 服务使用的包。

为此,我循环游标并使用 htp.p 打印数据。

例如

for i in c_my_cursor loop
  htp.p('<element>', i.data_field, '</element>');
end loop;

现在我听说游标不利于性能(这是真的吗?)。而且,不同的包中也有类似的游标,我觉得从维护的角度来看,切换到函数会更好。

但是我可以从函数返回什么?我不认为光标会工作。你们都用什么?

【问题讨论】:

  • 好问题。我在 Oracle 数据库中使用 XML 做了一些工作,但是随着每个新数据库的发布,都有一种新的做事方式。所以我也很想听听专家们怎么说。
  • 您使用的是哪个版本的数据库?另外,你会得到更好的答案
  • @APC 我正在使用 10g。顺便说一句,我还没有将其标记为答案,因为我仍在尝试 xmlagg(xmlelement(... stuff :) 所以,我们的想法是将整个 XML 作为标量值,避免循环的需要,对吗?

标签: performance oracle design-patterns function code-reuse


【解决方案1】:

游标本质上并不坏。 不好的是通过 Agonizing Row 处理 Row,而不是使用集合处理。 SQL 就是关于集合的乐趣。游标的问题在于 PL/SQL 开发人员经常会自动找到它们。这经常导致我们走 RBAR 路线,而直接的 SQL 语句会更有效。

函数并不比过程更有效。根据您是在做某事还是检索某事来选择函数或过程。

在您的情况下,我会考虑 Oracle 的内置 XML 功能是否适用于您的特定情况。这部分取决于您使用的是哪个版本的 Oracle,但自 8i 以来的几乎所有版本都可以与您发布的特定示例一起使用。 Find out more

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2015-11-09
    相关资源
    最近更新 更多