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

Jak użyć zmiennej z kursora w instrukcji select innego kursora w pl/sql

Aby to osiągnąć, musisz użyć dynamicznego SQL; coś takiego:

DECLARE
    TYPE cur_type IS REF CURSOR;

    CURSOR client_cur IS
        SELECT DISTING username
        FROM all_users
        WHERE length(username) = 3;

    emails_cur cur_type;
    l_cur_string VARCHAR2(128);
    l_email_id <type>;
    l_name <type>;
BEGIN
    FOR client IN client_cur LOOP
        dbms_output.put_line('Client is '|| client.username);
        l_cur_string := 'SELECT id, name FROM '
            || client.username || '.org';
        OPEN emails_cur FOR l_cur_string;
        LOOP
            FETCH emails_cur INTO l_email_id, l_name;
            EXIT WHEN emails_cur%NOTFOUND;
            dbms_output.put_line('Org id is ' || l_email_id
                || ' org name ' || l_name);
        END LOOP;
        CLOSE emails_cur;
    END LOOP;
END;
/

Edytowane poprawić dwa błędy i dodać linki do dokumentacji 10g dla OPEN-FOR oraz przykład .Edytowane aby zapytanie wewnętrznego kursora stało się zmienną typu string.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:DDL i cofanie transakcji

  2. Jak utworzyć słaby kursor odniesienia PL/SQL w bazie danych Oracle

  3. Przesuwanie niektórych rekordów do końca serii z tą samą datą

  4. Kolumna aktualizacji Oracle LTRIM i RTRIM

  5. Jak ustawić wiele szerokości kolumn w jednym poleceniu w Oracle?