Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/10/2012, 14:34
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Cursor PL/SQL

Pruebalo así:

Código SQL:
Ver original
  1. CREATE OR REPLACE
  2. PROCEDURE  "DesbalanceDiarioPrueba" IS
  3. CURSOR PRUEBA IS
  4.  
  5.  
  6. rango1 DATE;
  7. rango2 DATE;
  8.  
  9. CURSOR DDS IS
  10. SELECT  SUM(NUMLLA) LLAM ,SUM(ICMINO) MINS, ICOPAC,'Saliente' tipo  FROM ICRESDIA
  11.  WHERE ICDATE BETWEEN  rango1 AND rango2
  12.   AND ICACAS IN (169,170,98,99,100,4,5,81,87,28,29,34,35,32,33,43,44,94,95,97,60)--193
  13. GROUP BY  icopac;
  14.  
  15. CURSOR OPES IS
  16. SELECT 'Tipo' Tipo, DESOPE, SUM(llasal) lls, SUM(minsal) MS
  17. FROM ICDESRES
  18. WHERE DESDIA BETWEEN  rango1 AND rango2
  19. AND ictipe IN ('C','N','R')
  20. GROUP BY  DESOPE
  21. ORDER BY desope;
  22.  
  23.  
  24. BEGIN
  25.  
  26. SELECT TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-1)+1))
  27. INTO rango1
  28. FROM dual;
  29.  
  30. SELECT TRUNC(sysdate-1)
  31. INTO rango2
  32. FROM dual;
  33.  
  34. FOR r_OPES IN OPES LOOP
  35.   --DBMS_OUTPUT.PUT_LINE(r_OPES.Tipo||','||r_OPES.DESOPE||','||r_OPES.lls||','||r_OPES.MS);
  36. FOR r_DDS IN DDS LOOP
  37. IF r_OPES.DESOPE=r_DDS.ICOPAC THEN
  38.   DBMS_OUTPUT.PUT_LINE(r_OPES.Tipo||','||r_DDS.tipo||','||r_DDS.ICOPAC||','||r_DDS.LLAM-r_OPES.lls||','||r_DDS.MINS-r_OPES.MS);
  39.   END IF;
  40. END LOOP;
  41. END LOOP;
  42.  
  43.  
  44. END;

Nos cuentas
__________________
Without data, You are another person with an opinion.
W. Edwads Deming