diff --git a/system/database/drivers/oci8/oci8_result.php b/system/database/drivers/oci8/oci8_result.php
index af30457..fb4ed1f 100644
--- a/system/database/drivers/oci8/oci8_result.php
+++ b/system/database/drivers/oci8/oci8_result.php
@@ -31,21 +31,24 @@
var $limit_used;
/**
- * Number of rows in the result set
+ * Number of rows in the result set.
+ *
+ * Oracle doesn't have a graceful way to retun the number of rows
+ * so we have to use what amounts to a hack.
+ *
*
* @access public
* @return integer
*/
function num_rows()
{
- if (function_exists('oci_num_rows'))
+ $rowcount = count($this->result_array());
+ @ociexecute($this->stmt_id);
+ if ($this->curs_id)
{
- return @oci_num_rows($this->stmt_id);
+ @ociexecute($this->curs_id);
}
- else
- {
- return @ocirowcount($this->stmt_id);
- }
+ return $rowcount;
}
// --------------------------------------------------------------------
@@ -175,12 +178,7 @@
{
$id = ($this->curs_id) ? $this->curs_id : $this->stmt_id;
- while ($row = oci_fetch_object($id))
- {
- $result[] = $row;
- }
-
- return $result;
+ return @oci_fetch_object($id);
}
// If PHP 4 is being used we have to build our own result