Oracle OCI – 如何在不获取的情况下获取选择集中的行数

Oracle OCI – 如何在不获取的情况下获取选择集中的行数,第1张

概述Noob在这里(关于Oracle和OCI). 我正在编写一个程序来为我的公司做一些任务.在这些任务中,我必须更新oracle数据库以使其与其他 *** 作保持同步. 我想有效地预分配内存以保存在选择集上获取的结果.为了做到这一点,我需要知道选择集中有多少行. 我可以用2个单独的陈述来做;首先是SELECT COUNT语句,后跟SELECT语句,但从服务器的角度来看效率很低.我也可以执行我的SELECT语句 Noob在这里(关于Oracle和OCI).

我正在编写一个程序来为我的公司做一些任务.在这些任务中,我必须更新oracle数据库以使其与其他 *** 作保持同步.

我想有效地预分配内存以保存在选择集上获取的结果.为了做到这一点,我需要知道选择集中有多少行.

我可以用2个单独的陈述来做;首先是SELECT COUNT语句,后跟SELECT语句,但从服务器的角度来看效率很低.我也可以执行我的SELECT语句并在从选择集中获取行时动态分配内存,但从客户端的角度来看这是低效的.

我想简单地执行SELECT语句,并在获取任何行之前,检索选择集中匹配行的数量.

但我找不到具有此信息的属性.
有OCI_ATTR_ROW_COUNT但这是FETCHED的行数,而不是选择集中的总行数.
然后有OCI_ATTR_ParaM_COUNT,告诉你ColUMNS的数量(似乎没用,因为你已经知道你在sql中要求的列数).

有人知道如何在获取之前获取选择集行数吗?

谢谢
玩笑

解决方法 你不能. Oracle数据库通常不知道查询在获取最后一行之前将返回多少行.

通常,客户端将被设计为从客户端获取特别大小的批量数据,处理这些结果,然后获取下一批数据.例如,大多数PL / sql GUI应用程序(TOAD,sql Developer等)将执行查询,获取第一批50或100行,然后等待用户.当用户浏览数据时,客户端将获取下一批,处理该批处理并迭代直到最后一批被使用.您是否可以从内存中丢弃先前的批次,或者是否需要保留它们(以支持用户向后滚动的能力,例如,无需重新执行查询)是您的应用程序需要确定的内容.

当你担心在客户端上动态分配内存时,你担心什么效率低下?这通常是最有效的做事方式.假设您选择合理的批量大小,您将在客户端上请求合理大小的内存块(每个批处理一次或一次,具体取决于您是否需要在本地缓存数据),这非常有效.

总结

以上是内存溢出为你收集整理的Oracle OCI – 如何在不获取的情况下获取选择集中的行数全部内容,希望文章能够帮你解决Oracle OCI – 如何在不获取的情况下获取选择集中的行数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存