Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/10/2012, 13:25
Avatar de Inicia
Inicia
 
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 14 años, 1 mes
Puntos: 1
Pregunta Cursor PL/SQL

Hola, tengo una duda, estoy empezando a programar en PL/SQL y tengo realizado este cursor:


Código PL/SQL:
Ver original
  1. PROCEDURE  "DesbalanceDiarioPrueba" IS
  2. CURSOR PRUEBA IS
  3.  
  4.  
  5. rango1 DATE;
  6. rango2 DATE;
  7.  
  8. SELECT  SUM(NUMLLA) LLAM ,SUM(ICMINO) MINS, ICOPAC,'Saliente' tipo  FROM ICRESDIA
  9.  WHERE ICDATE BETWEEN  rango1 AND rango2
  10.   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
  11. GROUP BY  icopac;
  12.  
  13. CURSOR OPES IS
  14. SELECT 'Tipo' Tipo, DESOPE, SUM(llasal) lls, SUM(minsal) MS
  15. FROM ICDESRES
  16. WHERE DESDIA BETWEEN  rango1 AND rango2
  17. AND ictipe IN ('C','N','R')
  18. GROUP BY  DESOPE
  19. ORDER BY desope;
  20.  
  21.  
  22.  
  23. INTO rango1
  24. FROM dual;
  25.  
  26. SELECT TRUNC(sysdate-1)
  27. INTO rango2
  28. FROM dual;
  29.  
  30. FOR r_OPES IN OPES LOOP
  31.   DBMS_OUTPUT.PUT_LINE(r_OPES.Tipo||','||r_OPES.DESOPE||','||r_OPES.lls||','||r_OPES.MS);
  32. FOR r_DDS IN DDS LOOP
  33. IF r_OPES.DESOPE=r_DDS.ICOPAC THEN
  34.   DBMS_OUTPUT.PUT_LINE(r_DDS.tipo||','||r_DDS.ICOPAC||','||r_DDS.LLAM||','||r_DDS.MINS);
  35.   END IF;
  36.  
  37.  


El cual me trae un resultado así:

Tipo,102,53181,276288.2
Saliente,102,53183,276318.19
Tipo,119,241865,1362822.4
Saliente,119,241924,1365762.84

Mi dura es:

1. Como puedo hacer una resta o suma entre los diferentes cursores, o bien el resultado de cada campo es decir. Restar 53181 menos 53183 siendo el valor de relación el 102, ejemplo:

Lo que me da ahora:
Tipo,102,53181,276288.2
Saliente,102,53183,276318.19

Resultado que quiero:
Tipo,Saliente,102,2,29.99


Se los agradecería muchíiiiiiiisimo si me ayudan porque no sé como hacer operaciones entre cursores o como tengo q declarar las variables. Manejo el SQL server pero algunas instrucciones me confunden en este lenguaje.

Saludos.