Advertisement
dwhitzzz

Cursor fetch into multi vars

Apr 10th, 2019
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.63 KB | None | 0 0
  1. --cursor fetch into multi vars
  2.  
  3. ---------------------------------------------------------------
  4. -- simple example with dual
  5. ---------------------------------------------------------------
  6. DECLARE
  7.     firstName NUMBER(20);
  8.     v_LastName  NUMBER(20);
  9.     vtre  NUMBER(20);
  10.     vquat  NUMBER(20);
  11.    
  12.       CURSOR c_lecturer IS
  13.         SELECT '1324', '22222', '33333', '44444' FROM dual;
  14.     BEGIN
  15.     DBMS_OUTPUT.put_line(CHR(13) || 'start');  
  16.       OPEN c_lecturer;
  17.       LOOP
  18.         FETCH c_lecturer INTO firstName, v_LastName, vtre, vquat;
  19.          DBMS_OUTPUT.put_line(CHR(13) || 'firstName -> ' || firstName);  
  20.          DBMS_OUTPUT.put_line('v_LastName -> ' || v_LastName);  
  21.          DBMS_OUTPUT.put_line('vtre -> ' || vtre);  
  22.          DBMS_OUTPUT.put_line('vquat -> ' || vquat);  
  23.        EXIT WHEN c_lecturer%NOTFOUND;
  24.      END LOOP;
  25.      CLOSE c_lecturer;
  26.      DBMS_OUTPUT.put_line(CHR(13) || 'end');  
  27.    END;
  28.  
  29. ---------------------------------------------------------------
  30. ---------------------------------------------------------------
  31.  
  32.  
  33. ---------------------------------------------------------------
  34. --testing it
  35. ---------------------------------------------------------------
  36. DECLARE
  37.      IDRISKINS NUMBER(18);
  38.      IDVAR NUMBER(18);
  39.      NVERINI NUMBER(18);
  40.      NVERFI NUMBER(18);
  41.  
  42.     CURSOR c1 IS
  43.     --query
  44.     SELECT DISTINCT V.IDRISKINSURED, (SELECT idfattore FROM PPFATTORI WHERE ccodice = '6NCMD') AS IDFAT, V.NVERINIZIO, V.NVERFINE
  45.     FROM PCPOLICY P JOIN PCPOLICYASS PA ON (PA.IDPOL = P.IDPOL) JOIN PCASSRISK AR ON (AR.IDASSINSURED = PA.IDASSINSURED)
  46.     JOIN PCRISKINSURED RI ON (RI.IDRISKINSURED = AR.IDRISKINSURED ) JOIN PPRISCHI R ON (R.IDRISCHIO = RI.IDRISK)
  47.     JOIN PCRISKVARIABLE V ON (V.IDRISKINSURED = RI.IDRISKINSURED) WHERE R.CCODICE = 'CDMRA'
  48.     MINUS
  49.     SELECT DISTINCT V.IDRISKINSURED,(SELECT idfattore FROM PPFATTORI WHERE ccodice = '6NCMD') AS IDFAT, V.NVERINIZIO, V.NVERFINE
  50.     FROM PCPOLICY P  JOIN PCPOLICYASS PA ON (PA.IDPOL = P.IDPOL) JOIN PCASSRISK AR ON (AR.IDASSINSURED = PA.IDASSINSURED) JOIN PCRISKINSURED RI ON (RI.IDRISKINSURED = AR.IDRISKINSURED)
  51.     JOIN PPRISCHI R ON (R.IDRISCHIO = RI.IDRISK) JOIN PCRISKVARIABLE V ON (V.IDRISKINSURED = RI.IDRISKINSURED)
  52.     JOIN PPFATTORI F ON (F.IDFATTORE = V.IDVARIABLE) WHERE R.CCODICE = 'CDMRA' AND F.CCODICE = '6NCMD';
  53.    
  54.     BEGIN
  55.       DBMS_OUTPUT.put_line(CHR(13) || 'start');
  56.          
  57.        OPEN c1;
  58.         LOOP
  59.           FETCH c1 INTO IDRISKINS, IDVAR, NVERINI, NVERFI;
  60.             --multi variables are allowed while fetch NOT outside!
  61.            
  62.             -- do your stuff
  63.             EXECUTE IMMEDIATE 'INSERT INTO PCRISKVARIABLE (idriskinsured, idvariable, nverinizio, nverfine, CVALSTR, BOUTOFLIST, EORIGIN) values ('
  64.               || IDRISKINS || ',' || IDVAR|| ','|| NVERINI|| ','  || NVERFI ||', ''-'', 0, 2 )';
  65.              --dbms_output.put_line('INSERT INTO PCRISKVARIABLE (idriskinsured, idvariable, nverinizio, nverfine, CVALSTR, BOUTOFLIST, EORIGIN) values ('
  66.           --|| IDRISKINS || ',' || IDVAR|| ','|| NVERINI|| ','  || NVERFI ||', ''-'', 0, 2 )');
  67.           EXIT WHEN c1%NOTFOUND;
  68.         END LOOP;
  69.       CLOSE c1;
  70.      
  71.     EXCEPTION
  72.       WHEN OTHERS THEN
  73.         -- log on exception
  74.         DBMS_OUTPUT.put_line('ERROR!');
  75.         DBMS_OUTPUT.put_line(CHR(13) ||
  76.           'Insert in error -> INSERT INTO PCRISKVARIABLE (idriskinsured, idvariable, nverinizio, nverfine, CVALSTR, BOUTOFLIST, EORIGIN) values ('
  77.           || IDRISKINS || ',' || IDVAR|| ','|| NVERINI|| ','  || NVERFI ||', ''-'', 0, 2 )' );
  78.          
  79.     DBMS_OUTPUT.put_line(CHR(13) || 'end');        
  80. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement