33 lines
973 B
PHP
33 lines
973 B
PHP
<?php
|
|
/**
|
|
* oracle driver
|
|
*/
|
|
class Doctrine_Connection_Oracle extends Doctrine_Connection {
|
|
/**
|
|
* Adds an driver-specific LIMIT clause to the query
|
|
*
|
|
* @param string $query
|
|
* @param mixed $limit
|
|
* @param mixed $offset
|
|
*/
|
|
public function modifyLimitQuery($query,$limit,$offset) {
|
|
$e = explode("select ",strtolower($query));
|
|
$e2 = explode(" from ",$e[1]);
|
|
$fields = $e2[0];
|
|
|
|
$query = "SELECT $fields FROM (SELECT rownum as linenum, $fields FROM ($query) WHERE rownum <= ($offset + $limit)) WHERE linenum >= ".++$offset;
|
|
return $query;
|
|
}
|
|
/**
|
|
* returns the next value in the given sequence
|
|
* @param string $sequence
|
|
* @return integer
|
|
*/
|
|
public function getNextID($sequence) {
|
|
$stmt = $this->query("SELECT $sequence.nextval FROM dual");
|
|
$data = $stmt->fetch(PDO::FETCH_NUM);
|
|
return $data[0];
|
|
}
|
|
}
|
|
|