sql >> Databasteknik >  >> RDS >> Oracle

Hur man deklarerar en markör efter startdelen av en Oracle PL/SQL-procedur

För att göra detta måste du deklarera ett nytt block:

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;

Men jag förstår inte riktigt varför du inte bara kan deklarera den här markören tillsammans med markören y, definierad med en 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)
            ); 

Du kan sedan referera till markören så här:

FOR met IN x(t.FCODE) LOOP


  1. LocalDateTime , ZonedDateTime och Timestamp

  2. Infogar data i flera tabeller med spring jdbcTemplate

  3. klassen hittades inte undantag com.mysql.jdbc.driver

  4. CEILING() Exempel i SQL Server