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

[SOLUCIONADO] Procedimiento Almacenado que Utiliza Select con varios campos.

Estas en el tema de Procedimiento Almacenado que Utiliza Select con varios campos. en el foro de Oracle en Foros del Web. ¿Como colocar esto en un procedimiento almacenado? Ya qué según he entendido un procedimiento almacenado, solo puede devolver un valor de un select, y aquí ...
  #1 (permalink)  
Antiguo 02/08/2013, 02:09
 
Fecha de Ingreso: julio-2013
Mensajes: 36
Antigüedad: 10 años, 8 meses
Puntos: 1
Pregunta Procedimiento Almacenado que Utiliza Select con varios campos.

¿Como colocar esto en un procedimiento almacenado?
Ya qué según he entendido un procedimiento almacenado, solo puede devolver un valor de un select, y aquí como vemos hay varios campos dentro del select, he leído que se puede realizar con un cursores, necesitaría algo de orientación.

Código SQL:
Ver original
  1. SELECT
  2. cp.idcompra AS IDCOMPRA
  3. ,p.nombre AS Nombre_del_Producto
  4. , cp.cantidad AS Entrada
  5. , cp.salida AS Salida
  6. , (p.cantidad)+(cp.cantidad) AS StockCantidad
  7. , c.fecha AS Fecha
  8. FROM compradetalle cp
  9. INNER JOIN compra c ON cp.entradacompra = c.id
  10. INNER JOIN producto p ON cp.nombre = p.idproducto
  11. WHERE  trunc (c.fecha) BETWEEN  '29072013' AND '30072013'
  12. UNION
  13. SELECT
  14.   vd.idventa AS IDventa
  15. , pr.nombre AS Nombre_del_Producto
  16. , vd.entrada AS Entrada
  17. , vd.cantidad AS Salidad
  18. , pr.cantidad AS StockCantidad
  19. , c.fecha AS Fecha
  20. FROM ventadetalle vd
  21. INNER JOIN venta c ON vd.salidaventa = c.id
  22. INNER JOIN producto pr ON vd.nombre = pr.idproducto
  23. WHERE  trunc (c.fecha) BETWEEN  '29072013' AND '30072013'
  24. ORDER BY IDcompra, fecha;

He Intentado con un cursor, pero a la hora de compilarlo solo me dice bloque anonimo, ¿Qué valor tendría que darle a c1, como parametro del procedimiento?
Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE buscar(c1 OUT sys_refcursor)
  2. IS
  3. BEGIN
  4. OPEN c1 FOR
  5. SELECT
  6. cp.idcompra AS IDCOMPRA
  7. ,p.nombre AS Nombre_del_Producto
  8. , cp.cantidad AS Entrada
  9. , cp.salida AS Salida
  10. , (p.cantidad)+(cp.cantidad) AS StockCantidad
  11. , c.fecha AS Fecha
  12. FROM compradetalle cp
  13. INNER JOIN compra c ON cp.entradacompra = c.id
  14. INNER JOIN producto p ON cp.nombre = p.idproducto
  15. WHERE  trunc (c.fecha) BETWEEN  '29072013' AND '30072013'
  16. UNION
  17. SELECT
  18.   vd.idventa AS IDventa
  19. , pr.nombre AS Nombre_del_Producto
  20. , vd.entrada AS Entrada
  21. , vd.cantidad AS Salidad
  22. , pr.cantidad AS StockCantidad
  23. , c.fecha AS Fecha
  24. FROM ventadetalle vd
  25. INNER JOIN venta c ON vd.salidaventa = c.id
  26. INNER JOIN producto pr ON vd.nombre = pr.idproducto
  27. WHERE  trunc (c.fecha) BETWEEN  '29072013' AND '30072013'
  28. ORDER BY IDcompra, fecha;
  29. END;
  #2 (permalink)  
Antiguo 09/08/2013, 10:34
 
Fecha de Ingreso: marzo-2012
Ubicación: Los olivos
Mensajes: 40
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Procedimiento Almacenado que Utiliza Select con varios campos.

Hola, esta bien la forma que usas el cursor. No se pasa ningun parametro al procedimiento en cuestion.
Con lo que acabas de publicar ya has creado tu procedimiento que te devuelve los datos de tu query, ahora tienes que ejecutar tu objeto procedimiento y veras el resultado.
__________________
Conocimiento que no se comparte se pierde

Etiquetas: almacenado, campo, nombre, procedimiento, select, valor
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 16:55.