Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zadeklarować kursor po sekcji początku procedury Oracle PL/SQL?

Aby to zrobić, musisz zadeklarować nowy blok:

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;

Jednak nie do końca rozumiem, dlaczego nie można po prostu zadeklarować tego kursora wraz z kursorem y, zdefiniowanym za pomocą parametru:

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)
            ); 

Możesz wtedy odwołać się do kursora w ten sposób:

FOR met IN x(t.FCODE) LOOP


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. skonfigurować django z problemem bazy danych Oracle 11g

  2. SQL Dynamic ASC i DESC

  3. Nie można skompilować PL/SQL za pomocą BULK COLLECT i FORALL

  4. Sprawdzenie, czy pozycja nie istnieje w innej tabeli

  5. Czy zadanie może być tworzone dynamicznie wewnątrz wyzwalacza?