• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/db/oraclesqlhelper.php
  • Класс: BitrixMainDBOracleSqlHelper
  • Вызов: OracleSqlHelper::getTopSql
public function getTopSql($sql, $limit, $offset = 0)
{
	$offset = intval($offset);
	$limit = intval($limit);

	if ($offset > 0 && $limit <= 0)
		throw new BitrixMainArgumentException("Limit must be set if offset is set");

	if ($limit > 0)
	{
		//The first row selected has a ROWNUM of 1, the second has 2, and so on
		if ($offset <= 0)
		{
			$sql =
				"SELECT * ".
				"FROM (".$sql.") ".
				"WHERE ROWNUM <= ".$limit;
		}
		else
		{
			$sql =
				"SELECT * ".
				"FROM (".
				"   SELECT rownum_query_alias.*, ROWNUM rownum_alias ".
				"   FROM (".$sql.") rownum_query_alias ".
				"   WHERE ROWNUM <= ".($offset + $limit)." ".
				") ".
				"WHERE rownum_alias >= ".($offset + 1);
		}
	}
	return $sql;
}