Prado\Data\Common\Mssql\TMssqlCommandBuilder::rewriteLimitOffsetSql PHP Method

rewriteLimitOffsetSql() protected method

See http://troels.arvin.dk/db/rdbms/#select-limit-offset
protected rewriteLimitOffsetSql ( $sql, integer $limit, integer $offset ) : sql
$limit integer > 0
$offset integer > 0
return sql modified sql query applied with limit and offset.
    protected function rewriteLimitOffsetSql($sql, $limit, $offset)
    {
        $fetch = $limit + $offset;
        $sql = preg_replace('/^([\\s(])*SELECT( DISTINCT)?(?!\\s*TOP\\s*\\()/i', "\\1SELECT\\2 TOP {$fetch}", $sql);
        $ordering = $this->findOrdering($sql);
        $orginalOrdering = $this->joinOrdering($ordering);
        $reverseOrdering = $this->joinOrdering($this->reverseDirection($ordering));
        $sql = "SELECT * FROM (SELECT TOP {$limit} * FROM ({$sql}) as [__inner top table__] {$reverseOrdering}) as [__outer top table__] {$orginalOrdering}";
        return $sql;
    }