我想知道将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提示。