Noob在这里(关于Oracle和OCI).
我正在编写一个程序来为我的公司做一些任务.在这些任务中,我必须更新oracle数据库以使其与其他操作保持同步.
我想有效地预分配内存以保存在选择集上获取的结果.为了做到这一点,我需要知道选择集中有多少行.
我可以用2个单独的陈述来做; 首先是SELECT COUNT语句,后跟SELECT语句,但从服务器的角度来看效率很低.我也可以执行我的SELECT语句并在从选择集中获取行时动态分配内存,但从客户端的角度来看这是低效的.
我想简单地执行SELECT语句,并在获取任何行之前,检索选择集中匹配行的数量.
但我找不到具有此信息的属性.
有OCI_ATTR_ROW_COUNT但这是FETCHED的行数,而不是选择集中的总行数.然后有OCI_ATTR_PARAM_COUNT告诉你COLUMNS的数量(似乎没用,因为你已经知道你在SQL中要求的列数).
有人知道如何在获取之前获取选择集行数吗?
谢谢乔希
我使用MSVC++ 2012用C++编写,我的代码针对的是x86平台.我有一种情况,写一个函数(除其他外)可以在CALLING函数的堆栈上分配一些内存是有利的.我不打算在这篇文章中辩论这样做的智慧,而只是考虑技术可行性.
我的实现计划是将我的函数编写为裸函数,并在内联汇编中使用自定义prolog代码.在prolog中,我首先确定我需要多少内存,然后将返回地址,参数和此指针向下移动到该堆栈中.最后,我会根据该数量调整堆栈指针.如果我没有弄错,这将在调用函数的堆栈上创建一个区域.
有没有人看到该计划中有任何漏洞?