Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

[SOLUCIONADO] Como puedo ordenar una consulta y que solo me traiga 10 registros

Estas en el tema de Como puedo ordenar una consulta y que solo me traiga 10 registros en el foro de Oracle en Foros del Web. BUenos dias, necesito hacer una funcion que organize los registro alfabeticamente y luego saque los 10 primeros, alguien tiene alguna idea de como hacerlo? Aca ...
  #1 (permalink)  
Antiguo 28/01/2014, 09:46
 
Fecha de Ingreso: enero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Como puedo ordenar una consulta y que solo me traiga 10 registros

BUenos dias, necesito hacer una funcion que organize los registro alfabeticamente y luego saque los 10 primeros, alguien tiene alguna idea de como hacerlo? Aca anexo el codigo.
Código:
  Function NombreNivelMetaProducto(IdPlanDesllo Pls_integer)Return Pls_integer As
    Resultado Varchar2(4000);
    Begin
    Select
      nombre
    Into
      Resultado 
      
    From 
      tbplandesllonivel_D
      
    Where
      fkplandesllo	=	IdPlanDesllo
      order by orden;
    
     --rownum <= 1
    
     Return Resultado;
    
  End;
Muchas gracias
  #2 (permalink)  
Antiguo 28/01/2014, 10:35
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Como puedo ordenar una consulta y que solo me traiga 10 registros

Varias cosas mal en tu funcion.

Si en la declaracion retorna un pls_integer, porque lo que realmente devuelves es un varchar2(4000)?
SELECT INTO hace referencia a cursores implicitos que unicamente esperan un registro de retorno. Cuando ejecutas esto con una consulta que requiere 10, te sacará un error TOO_MANY_ROWS.
Para esto debes hacer uso de cursores explicitos.

Por otro lado, solo hablando de la consulta, requieres hacer una subconsulta inicial ordenada y al resultado de la misma, aplicarle un rownum <=10.

Código SQL:
Ver original
  1. SELECT *FROM
  2. (
  3. SELECT
  4.       nombre
  5.     FROM
  6.       tbplandesllonivel_D
  7.     WHERE
  8.       fkplandesllo  =   IdPlanDesllo
  9.       ORDER BY orden
  10. ) WHERE rownum <=10;

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 28/01/2014, 11:21
 
Fecha de Ingreso: enero-2014
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Como puedo ordenar una consulta y que solo me traiga 10 registros

Cita:
Iniciado por huesos52 Ver Mensaje
Varias cosas mal en tu funcion.

Si en la declaracion retorna un pls_integer, porque lo que realmente devuelves es un varchar2(4000)?
SELECT INTO hace referencia a cursores implicitos que unicamente esperan un registro de retorno. Cuando ejecutas esto con una consulta que requiere 10, te sacará un error TOO_MANY_ROWS.
Para esto debes hacer uso de cursores explicitos.

Por otro lado, solo hablando de la consulta, requieres hacer una subconsulta inicial ordenada y al resultado de la misma, aplicarle un rownum <=10.

Código SQL:
Ver original
  1. SELECT *FROM
  2. (
  3. SELECT
  4.       nombre
  5.     FROM
  6.       tbplandesllonivel_D
  7.     WHERE
  8.       fkplandesllo  =   IdPlanDesllo
  9.       ORDER BY orden
  10. ) WHERE rownum <=10;

saludos
Muchas gracias por ayudarme, tu código me ha servido, ademas me confundi con lo del varchar2 pero ya lo arregle.
Gracias de nuevo y buen dia.

Etiquetas: funcion, registro, registros, resultado, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:11.