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

Procedure, cursor

Estas en el tema de Procedure, cursor en el foro de Oracle en Foros del Web. Gracias de ante mano. mi problema es en un procedimiento almacenado. en la cual tengo que hacer que en un cursor me traiga todo de ...
  #1 (permalink)  
Antiguo 21/09/2010, 09:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Procedure, cursor

Gracias de ante mano. mi problema es en un procedimiento almacenado. en la cual tengo que hacer que en un cursor me traiga todo de 4 consulta. cada consulta es traer count(*) de todo el registro de una fecha a otra. con un group by. ya cree todas las consulta pero me trae todo, pero en una fila. y yo quiero que me traiga para cada consulta en campo diferente. ayuda
  #2 (permalink)  
Antiguo 21/09/2010, 09:37
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: Procedure, cursor

Postea el procedure que tienes.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 21/09/2010, 09:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Procedure, cursor

Este es mi procedure, en realida son dos tabla, un es cedula y otro chapa. y tengo que mostrar la cantidad impresa desde una fecha a otra agrupado con la fecha urev_fecha_hora

CREATE OR REPLACE PROCEDURE WRA.SL_RESUMEN_MENSUAL (
FECHA_IN IN DATE,
FECHA_FIN IN DATE,
WRRESUMEN OUT REF CURSOR
)
AS
/* TYPE LOCAL VARIABLES DECLARATION HERE */
BEGIN
OPEN WRRESUMEN FOR select (
select count(*) from wra.cedula
where (wra.cedula.urev_fecha_hora BETWEEN FECHA_IN and FECHA_FIN) AND
(wra.cedula.id_tipo_estado = 4)and (wra.cedula.procesado in (0,1)) and (wra.cedula.tipo_automotor ='MOTO')
GROUP BY urev_fecha_hora) AS CEDULA_MOTO,

(select count(*) from wra.cedula
where (wra.cedula.urev_fecha_hora BETWEEN FECHA_IN and FECHA_FIN) AND
(wra.cedula.id_tipo_estado = 4)and (wra.cedula.procesado in (0,1)) and (wra.cedula.tipo_automotor <>'MOTO')
GROUP BY urev_fecha_hora) AS CEDULA_AUTO,

/* DATOS DE CHAPAS TOTAL */
(select count(*) from wra.chapa
where (wra.chapa.urev_fecha_hora BETWEEN FECHA_IN and FECHA_FIN)AND
(wra.chapa.id_tipo_estado = 4)and (wra.chapa.tipo_automotor <>'MOTO')AND(wra.chapa.tipo_automotor <>'MOTOCICLETA')
group by urev_fecha_hora) AS chapa_auto,

(select count(*) from wra.chapa
where (wra.chapa.urev_fecha_hora BETWEEN FECHA_IN and FECHA_FIN)AND
(wra.chapa.id_tipo_estado = 4)and ((wra.chapa.tipo_automotor ='MOTO')or(wra.chapa.tipo_automotor ='MOTOCICLETA'))
group by urev_fecha_hora) AS chapa_moto
from wra.cedula;

END;
  #4 (permalink)  
Antiguo 21/09/2010, 10:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Procedure, cursor

cada select seria un campo que mostrara los registro
  #5 (permalink)  
Antiguo 21/09/2010, 10:33
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: Procedure, cursor

Y cual es el error?
así como lo tienes te muestra en cada columna un valor resultante. No?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 21/09/2010, 11:20
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Procedure, cursor

No da ningun error. solo que cuando ejecuto el dataset, no trae ningun datos. sin embargo tiene dato. y no me trae nada
  #7 (permalink)  
Antiguo 21/09/2010, 11:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Procedure, cursor

lo que no se si esta bien el cuerpo del procedure. si hay otra forma de hacer
  #8 (permalink)  
Antiguo 21/09/2010, 12:38
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: Procedure, cursor

la pregunta es como lo estas llamado? como haces el execute?
Mira este tema donde matanga pone un claro ejemplo de lo que creo estas buscando.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 21/09/2010, 13:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Procedure, cursor

Primeramente estoy usando delphi, y por lo tanto estoy ejecutando en un dataset, habro el dataset y le paso alli mismo el parametro y ejecuto. y ahora si me dio un error que dice '' ORA-01427:single-row subquery returns more than one row'', que segun entiendo es que la consulta esta devolviendo mas de una fila. la cual esta bien porque si solo era un count(*) sin el group by. solo iva a devolver una registro pero como es group by devuelve mas de una fila.

Lo que yo quiero hacer es lo siguiente:

cedula chapa

fecha auto moto auto moto
20/09/2010 50 20 30 20
21/09/2010 100 43 50 60

y si sucesivamente dependiendo de de que fecha se le pase el parametro
Asimismo es el grafico en la que quiero que mi procedure me devuelva los datos, la fecha no es necesario pero los 4 columna si. es un modelo la cual quiero hacer para luego ejecutar y mostrar en un reporte
  #10 (permalink)  
Antiguo 21/09/2010, 13:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Procedure, cursor

cedula chapa

fecha auto moto auto moto
20/09/2010 50 20 30 20
21/09/2010 100 43 50 60
  #11 (permalink)  
Antiguo 21/09/2010, 13:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Procedure, cursor

No se como mostrarte el ejemplo, ese me salio mas

Etiquetas: cursor, procedure
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 11:02.