sql >> Database >  >> RDS >> Oracle

Een cursor declareren na het begingedeelte van een Oracle PL/SQL-procedure

Om dit te doen, moet je een nieuw blok declareren:

for t in y loop 
    DECLARE
    cursor X IS ( 
                SELECT DISTINCT s.NIF PREMISE,a.COD_UNICOM READING, A.COD_LECT_AREA AREA
                FROM SUMCON s, LECT_AREAS a 
                WHERE a.COD_UNICOM  = t.FCODE
                AND s.NUM_SUM IN (select num_sum from RFC_UPD_NEW_MRSP_POOL where cod_unicom = t.FCODE)
                ); 
     BEGIN

        for met in x loop 
...
        end loop;
     END;

Ik begrijp echter niet helemaal waarom je deze cursor niet gewoon samen met cursor y kunt declareren, gedefinieerd met een parameter:

cursor X (p_FCODE RFC_UPD_NEW_MRSP_POOL.cod_unicom%TYPE) IS ( 
            SELECT DISTINCT s.NIF PREMISE,a.COD_UNICOM READING, A.COD_LECT_AREA AREA
            FROM SUMCON s, LECT_AREAS a 
            WHERE a.COD_UNICOM  = p_FCODE
            AND s.NUM_SUM IN (select num_sum from RFC_UPD_NEW_MRSP_POOL where cod_unicom = p_FCODE)
            ); 

U kunt dan als volgt naar de cursor verwijzen:

FOR met IN x(t.FCODE) LOOP


  1. PostgreSQL - een betrouwbare wachtrij implementeren

  2. Directe toegang tot de serverdatabase via Ajax (zonder PHP of een ander tussenproduct)

  3. Tuple naar lijst - Python / PostgreSQL-retourtype van SETOF-record

  4. Uitzondering in hoofdthread com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:er is een fout in uw SQL-syntaxis