我想与一些经验丰富的Oracle开发人员讨论后端开发的最佳实践。
我编写了许多以XML格式打印数据并由HTTP服务使用的软件包。
为此,我遍历游标并使用htp.p打印数据。
e.g。
for i in c_my_cursor loop
htp.p('<element>', i.data_field, '</element>');
end loop;
现在我听说游标对性能有害(这是真的吗?)。此外,在不同的软件包中使用了类似的游标,从维护的角度来看,我觉得切换到函数会更好。
但是我可以从函数中返回什么?我不认为游标会起作用。你们有什么用?
答案 0 :(得分:10)
游标本身并不坏。 坏的是处理Row By Agonizing Row,而不是使用set处理。 SQL就是The Joy Of Sets。游标的问题在于PL / SQL开发人员经常自动获取它们;当一个直接的SQL语句更有效时,这经常导致我们沿着RBAR路线走下去。
功能并不比程序更有效。根据您是在做某事还是检索某些内容来选择功能或程序。
在您的情况下,我会考虑Oracle的内置XML功能是否适用于您的特定情况。这部分取决于您使用的Oracle版本,但几乎任何版本,因为8i将与您发布的特定示例一起使用。 Find out more。