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; }