como consultar en oracle

Muy bien. Ya he conseguido que funcione. Espero que ésto te ayude.

En el controlador:   def mi_accion     @pager = ::Paginator.new(Mi_tabla.count, 5) do |offset, per_page|       Mi_tabla.find(:all, :limit => per_page, :offset => offset)     end

    @page = @pager.page(params[:page])   end

El número 5 es el número de líneas por página. Por supuesto lo podrías reemplazar con una variable que tendrías que inicializar.

En la vista:   <table border="2">     <tr>       <th>Columna 1</th>       <th>Columna 2</th>       <th>Columna 3</th>     </tr>     <% @page.each do |mi_tabla| %>       <tr>         <td><%= mi_tabla.columna1 %></td>         <td><%= mi_tabla.columna2 %></td>         <td><%= mi_tabla.columna3 %></td>       </tr>     <% end %>   </table>

  <%= @page.number %>   <%= link_to( "Prev", :page => @page.prev.number) if @page.prev? %>   <%= link_to( "Next", :page => @page.next.number) if @page.next? %>

Pepe

como esta la cosa amigo pepe como vas con tu proyecto que has logrado el paginado me tiene saliendo canas verdes aun no consigo la solucion estoy haciendo otras cositas saludos

No me va mal. Mi aplicación está prácticamente terminada. Estoy esperando a que los usuarios me digan si hay algo que cambiar. La paginación funciona sin ningún problema.

Esta debe ser la 3ª o 4ª vez que te lo digo pero creo que deberías dejar de utilizar SQL y empezar a utilizar el adaptador. Creo que la mayoría de tus problemas vienen por ahí.

Si no utilizas el adaptador esto es lo que creo que deberías hacer basado en la siguiente instrucción:

  @pager = ::Paginator.new(Mi_tabla.count, 5) do |offset, per_page|     Mi_tabla.find(:all, :limit => per_page, :offset => offset)   end

Tienes que remplazar "Mi_tabla.count" con una variable en la que hayas almacenado el número de registros en tu tabla, que habrás obtenido con una sentencia SQL. Además tienes que remplazar "Mi_tabla.find (:all, :limit => per_page, :offset => offset)" con un array que contenga los datos de los registros que quieres procesar. Cuando construyas el array la sentencia SQL tiene que utilizar LIMIT y también OFFSET, pero no sé si esa funcionalidad existe en Oracle ahora mismo.

He encontrado un ejemplo para MySQL en la página SQL Pagination with LIMIT and OFFSET

SELECT column FROM table LIMIT 10 OFFSET 10

He buscado también por si lo podía encontrar en Oracle y he encontrado otra página (Uwyn - Home limit_and_offset_in_oracle) donde se decía que LIMIT y OFFSET no existen en Oracle (el artículo de la página es de 2004) pero que se podía conseguir el mismo efecto con la siguiente sentencia:

SELECT * FROM (     SELECT ROW_NUMBER() OVER(ORDER BY column1) LINENUM, column1, column2     FROM MyTable     ORDER BY column1 ) WHERE LINENUM BETWEEN 100 AND 200;

No he verificado nada pero a pesar de no conocer todos los "keywords" utilizados la sentencia parece legítima.

De todas formas lo que están intentando hacer con el paginador es algo que podrías hacer manualmente y creo que sería bastante sencillo. Lo único que tienes que hacer es saber qué página necesitas mostrar (la primera cuando sea la primera vez que construyes la página y luego te lo proporcionará el usuario) y cuántos registros hay en cada página. Con esos dos datos puedes seleccionar los registros que necesites de tu completo resultset y generar la página con ellos.

Espero que esto te ayude.

Pepe

Hola amigo pepe como has estado espero que bien!-! pana tengo un problema con lo siguiente estoy haciendo una busqueda de un numero de orden la cual debo ingresar un numero 'x' y me debe arrojar la siguiente informacion Nombre_del_Cliente ,Monto_Venta,Categoria Actual el cual ya me la esta presentando pero se requiere de modificar,pero cuando le doy al boton de modificar no extrae los datos a modificar esto lo estoy haciendo en oracle ya que el paginar me comio,estoy haciendo estas consulta de esta manera no se tu si tienes el conocimiento para ayudarme en este paso te lo agradeceria un saludo   oraldo alarcon venezuela-zulia