class SQL::Maker::Select::Oracle

Public Instance Methods

as_limit() click to toggle source

Oracle doesn’t have the LIMIT clause.

# File lib/sql/maker/select/oracle.rb, line 5
def as_limit
  return ''
end
as_sql() click to toggle source

Override as_sql to emulate the LIMIT clause.

Calls superclass method SQL::Maker::Select#as_sql
# File lib/sql/maker/select/oracle.rb, line 10
def as_sql
  limit  = self.limit
  offset = self.offset

  if limit && offset
    self.add_select( "ROW_NUMBER() OVER (ORDER BY 1) R" )
  end

  sql = super

  if limit
    sql = "SELECT * FROM ( #{sql} ) WHERE "
    if offset
      sql = sql + " R BETWEEN #{offset} + 1 AND #{limit} + #{offset}"
    else
      sql = sql + " rownum <= #{limit}"
    end
  end
  return sql
end