function paginate($start, $limit)
 {
     // Extract the fields being selected (swiped from PEAR::DB)
     $sql = "SELECT * FROM ({$this->sql}) WHERE 1=1";
     $stmt = new lmbOciStatement($this->connection, $sql);
     $queryId = $this->connection->executeStatement($stmt->getStatement());
     $ncols = oci_num_fields($queryId);
     $cols = array();
     for ($i = 1; $i <= $ncols; $i++) {
         $cols[] = '"' . oci_field_name($queryId, $i) . '"';
     }
     $fields = implode(',', $cols);
     // Build the paginated query...
     $sql = "SELECT {$fields} FROM" . "  (SELECT rownum as linenum, {$fields} FROM" . "      ({$this->sql})" . '  WHERE rownum <= ' . ($start + $limit) . ') WHERE linenum >= ' . ++$start;
     $this->sql = $sql;
 }
 protected function _prepareStatement()
 {
     parent::_prepareStatement();
     foreach (array_keys($this->lobDescriptors) as $name) {
         if (!oci_bind_by_name($this->statement, ':p_' . $name, $this->lobDescriptors[$name], -1, $this->lobs[$name]->getNativeType())) {
             $this->connection->_raiseError($this->statement);
         }
     }
 }