【发布时间】:2010-11-19 10:44:28
【问题描述】:
给出了一个无法更改的存储过程。它返回游标,结果中有许多列。 Oracle 中是否有一种简单的方法来BULK COLLECT INTO仅游标提供的列的子集?
FOR 应该避免循环和新的集合类型。我不想从游标中获取所有数据,只是需要的数据。
例如,BULK COLLECTION INTO 光标中的所有列都可以:
FETCH s_cursor BULK COLLECT INTO staff_ids;
【问题讨论】:
-
嗯,我看到你为没有新的集合类型添加了额外的限制。你想解决什么问题?是为了提高性能吗?
-
是的,基本上我想使用该语言的所有资源来避免性能泄漏。我想我将不得不复制一个存储过程并删除不需要的列,以避免获取比需要更多的数据。即使这会导致代码重复。
-
是的,为避免性能泄漏,您需要修改/新的存储过程。打开游标后丢弃不需要的列意味着数据库已经完成了所有艰苦的工作,因此已经发生了性能泄漏。
标签: oracle collections plsql cursor