diff --git a/system/drivers/DB_active_record.php b/system/drivers/DB_active_record.php
index 1320af9..c7e4f09 100644
--- a/system/drivers/DB_active_record.php
+++ b/system/drivers/DB_active_record.php
@@ -257,7 +257,7 @@
 	/**
 	 * Like
 	 *
-	 * Called by like() or olike()
+	 * Called by like() or orlike()
 	 *
 	 * @access	private
 	 * @param	mixed
@@ -346,7 +346,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Sets the OR HAVING value
+	 * Sets the HAVING values
 	 *
 	 * Called by having() or orhaving()
 	 *
diff --git a/system/drivers/DB_driver.php b/system/drivers/DB_driver.php
index 5fcb04a..2d1232d 100644
--- a/system/drivers/DB_driver.php
+++ b/system/drivers/DB_driver.php
@@ -46,6 +46,12 @@
 	var $bind_marker	= '?';
 	var $queries		= array();
 	
+    // These are use with Oracle
+    var $stmt_id;
+    var $curs_id;
+    var $limit_used;
+	
+	
 	/**
 	 * Constructor.  Accepts one parameter containing the database
 	 * connection settings. 
@@ -151,6 +157,11 @@
             }
             return FALSE;        
 		}
+		
+        if ($this->dbdriver == 'oci8')
+        {
+			return $sql;
+		}		
 	
 		$query = $this->query($sql);
 		$row = $query->row();
@@ -173,7 +184,7 @@
 	 * @param	array	An array of binding data
 	 * @return	mixed		 
 	 */	
-    function query($sql, $binds = FALSE)
+    function query($sql, $binds = FALSE, $return_object = TRUE)
     {    
 		if ( ! $this->conn_id)
 		{
@@ -228,11 +239,19 @@
         $this->query_count++;
         
 		// Was the query a "write" type?
-		// If so we'll return simply return true
+		// If so we'll simply return true
 		if ($this->is_write_type($sql) === TRUE)
 		{
 			return TRUE;
 		}
+		
+		// Return TRUE if we don't need to create a result object 
+		// Currently only the Oracle driver uses this when stored
+		// procedures are used
+		if ($return_object !== TRUE)
+		{
+			return TRUE;
+		}
 
 		// Instantiate and return the DB result object
 		$result = 'CI_DB_'.$this->dbdriver.'_result';
@@ -241,6 +260,13 @@
         $RES->conn_id	= $this->conn_id;
         $RES->db_debug	= $this->db_debug;
         $RES->result_id	= $this->result_id;
+        
+        if ($this->dbdriver == 'oci8')
+        {
+			$RES->stmt_id   = $this->stmt_id;
+			$RES->curs_id   = NULL;
+			$RES->limit_used = $this->limit_used;
+        }
 
 		return $RES;
 	}
@@ -352,19 +378,16 @@
 	 */	
 	function escape($str)
 	{	
-		if ( ! is_numeric($str)) // bug fix to ensure that numbers are not treated as strings.
+		switch (gettype($str))
 		{
-			switch (gettype($str))
-			{
-				case 'string'	:	$str = "'".$this->escape_str($str)."'";
-					break;
-				case 'boolean'	:	$str = ($str === FALSE) ? 0 : 1;
-					break;
-				default			:	$str = ($str === NULL) ? 'NULL' : $str;
-					break;
-			}		
-		}
-	
+			case 'string'	:	$str = "'".$this->escape_str($str)."'";
+				break;
+			case 'boolean'	:	$str = ($str === FALSE) ? 0 : 1;
+				break;
+			default			:	$str = ($str === NULL) ? 'NULL' : $str;
+				break;
+		}		
+
 		return $str;
 	}
 	
@@ -394,7 +417,14 @@
 		{
 			foreach($query->result_array() as $row)
 			{
-				$retval[] = array_shift($row);
+				if (isset($row['TABLE_NAME']))
+				{
+					$retval[] = $row['TABLE_NAME'];
+				}
+				else
+				{
+					$retval[] = array_shift($row);
+				}
 			}
 		}
 
@@ -447,7 +477,7 @@
     	$retval = array();
 		foreach($query->result_array() as $row)
 		{
-			if ($this->dbdriver == 'mssql' AND isset($row['COLUMN_NAME']))
+			if (isset($row['COLUMN_NAME']))
 			{
 				$retval[] = $row['COLUMN_NAME'];
 			}
@@ -671,29 +701,6 @@
 
     }  
 	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Field Data - old version - DEPRECATED
-	 * 
-	 * @deprecated	use $this->db->field_data() instead
-	 */	
-	function fields($table = '')
-	{
-		return $this->field_data($table);
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Smart Escape String - old version - DEPRECATED
-	 * 
-	 * @deprecated	use $this->db->escape() instead
-	 */	
-	function smart_escape_str($str)
-	{
-		return $this->escape($str);
-	}
 }
 
 
@@ -926,24 +933,4 @@
 
 }
 
-
-
-/**
- * Database Field Class
- * 
- * This class will contain the field meta-data.  It 
- * is called by one of the field result functions
- *
- * @category	Database
- * @author		Rick Ellis
- * @link		http://www.codeigniter.com/user_guide/libraries/database/
- */
-class CI_DB_field {
-	var $name;
-	var $type;
-	var $default;
-	var $max_length;
-	var $primary_key;
-}
-
 ?>
\ No newline at end of file
diff --git a/system/drivers/DB_mssql.php b/system/drivers/DB_mssql.php
index f6e672b..c842476 100644
--- a/system/drivers/DB_mssql.php
+++ b/system/drivers/DB_mssql.php
@@ -424,7 +424,7 @@
 		$retval = array();
 		while ($field = mssql_fetch_field($this->result_id))
 		{	
-			$F 				= new CI_DB_field();
+			$F 				= new stdClass();
 			$F->name 		= $field->name;
 			$F->type 		= $field->type;
 			$F->max_length	= $field->max_length;
diff --git a/system/drivers/DB_mysql.php b/system/drivers/DB_mysql.php
index a90d842..7279097 100644
--- a/system/drivers/DB_mysql.php
+++ b/system/drivers/DB_mysql.php
@@ -443,7 +443,7 @@
 		$retval = array();
 		while ($field = mysql_fetch_field($this->result_id))
 		{	
-			$F 				= new CI_DB_field();
+			$F				= new stdClass();
 			$F->name 		= $field->name;
 			$F->type 		= $field->type;
 			$F->default		= $field->def;
diff --git a/system/drivers/DB_mysqli.php b/system/drivers/DB_mysqli.php
index 49adb5c..d2a3140 100644
--- a/system/drivers/DB_mysqli.php
+++ b/system/drivers/DB_mysqli.php
@@ -451,7 +451,7 @@
 		$retval = array();
 		while ($field = mysqli_fetch_field($this->result_id))
 		{	
-			$F 				= new CI_DB_field();
+			$F 				= new stdClass();
 			$F->name 		= $field->name;
 			$F->type 		= $field->type;
 			$F->default		= $field->def;
diff --git a/system/drivers/DB_odbc.php b/system/drivers/DB_odbc.php
index a5a8db6..57cdbce 100644
--- a/system/drivers/DB_odbc.php
+++ b/system/drivers/DB_odbc.php
@@ -420,7 +420,7 @@
 		$retval = array();
 		for ($i = 0; $i < $this->num_fields(); $i++)
 		{
-			$F 				= new CI_DB_field();
+			$F 				= new stdClass();
 			$F->name 		= odbc_field_name($this->result_id, $i);
 			$F->type 		= odbc_field_type($this->result_id, $i);
 			$F->max_length	= odbc_field_len($this->result_id, $i);
diff --git a/system/drivers/DB_postgre.php b/system/drivers/DB_postgre.php
index aa7ec70..57ef179 100644
--- a/system/drivers/DB_postgre.php
+++ b/system/drivers/DB_postgre.php
@@ -456,7 +456,7 @@
 		$retval = array();
 		for ($i = 0; $i < $this->num_fields(); $i++)
 		{
-			$F 				= new CI_DB_field();
+			$F 				= new stdClass();
 			$F->name 		= pg_field_name($this->result_id, $i);
 			$F->type 		= pg_field_type($this->result_id, $i);
 			$F->max_length	= pg_field_size($this->result_id, $i);
diff --git a/system/drivers/DB_sqlite.php b/system/drivers/DB_sqlite.php
index 71d2561..48e2c87 100644
--- a/system/drivers/DB_sqlite.php
+++ b/system/drivers/DB_sqlite.php
@@ -449,7 +449,7 @@
 		$retval = array();
 		for ($i = 0; $i < $this->num_fields(); $i++)
 		{
-			$F 				= new CI_DB_field();
+			$F 				= new stdClass();
 			$F->name 		= sqlite_field_name($this->result_id, $i);
 			$F->type 		= 'varchar';
 			$F->max_length	= 0;