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