Esempio n. 1
0
 /**
  * {@inheritdoc}
  *
  * @link http://stackoverflow.com/questions/2135418/equivalent-of-limit-and-offset-for-sql-server
  */
 protected function limit($limit, $offset, $rowNumber = null)
 {
     if (empty($rowNumber) && $this->driver->getServerVersion() >= 12) {
         $statement = "OFFSET {$offset} ROWS ";
         if (!empty($limit)) {
             $statement .= "FETCH NEXT {$limit} ROWS ONLY";
         }
         return trim($statement);
     }
     $statement = "WHERE {$this->quote($rowNumber)} ";
     //0 = row_number(1)
     $offset = $offset + 1;
     if (!empty($limit)) {
         $statement .= "BETWEEN {$offset} AND " . ($offset + $limit - 1);
     } else {
         $statement .= ">= {$offset}";
     }
     return $statement;
 }
 /**
  * {@inheritdoc}
  *
  * @link http://stackoverflow.com/questions/2135418/equivalent-of-limit-and-offset-for-sql-server
  */
 protected function compileLimit($limit, $offset, $rowNumber = null)
 {
     if (empty($limit) && empty($offset)) {
         return '';
     }
     //Modern SQLServer are easier to work with
     if (empty($rowNumber) && $this->driver->serverVersion() >= 12) {
         $statement = "OFFSET {$offset} ROWS ";
         if (!empty($limit)) {
             $statement .= "FETCH NEXT {$limit} ROWS ONLY";
         }
         return trim($statement);
     }
     $statement = "WHERE {$this->quote($rowNumber)} ";
     //0 = row_number(1)
     $offset = $offset + 1;
     if (!empty($limit)) {
         $statement .= "BETWEEN {$offset} AND " . ($offset + $limit - 1);
     } else {
         $statement .= ">= {$offset}";
     }
     return $statement;
 }