我想知道将NOCOPY作为函数参数传递如何提高返回SYS_REFCURSOR的函数的性能。
在阅读了Oracle文档之后,我阅读了以下内容:
如果要传回大量数据输入输出参数(如集合、大varchar2值或lob),此技术可以显著加快速度。
因为SYS_REFCURSORS是指向查询结果集的指针,SELECT是sql中最快的操作,所以在函数中传递<SYS_REFCURSOR> OUT NOCOPY SYS_REFCURSOR这样的内容有什么好处吗?
我发现this thread但出现了两种观点:
1-我们可以通过引用而不是通过值来增加性能调用,如下所示:

Procedure (vRefCur OUT NOCOPY SYS_REFCURSOR).

2-SYS_REFCURSOR已经是指针(link)了,为了提高性能,应该优化sql语句。
你怎么认为?
提前谢谢!

最佳答案

至于表现-没有大的区别。
未指定NOCOPY时,Oracle将只创建指针的另一个副本。
因此,如果不希望系统中有两个相同的指针,请提供nocopy提示。

10-08 04:05