sql >> Databáze >  >> RDS >> Oracle

Jak použít proměnnou z kurzoru v příkazu select jiného kurzoru v pl/sql

Abyste toho dosáhli, musíte použít dynamické SQL; něco jako:

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

Upraveno opravit dvě chyby a přidat odkazy na dokumentaci 10g pro OPEN-FOR a příklad .Upraveno aby se dotaz vnitřního kurzoru stal řetězcovou proměnnou.



  1. chyba při importu excel souboru do databáze

  2. Příkaz Django 1.8 inspectdb nevidí pohledy PostgreSQL podle dokumentace

  3. Příklad autonomní transakce Oracle

  4. MySQL pracuje s 127.0.0.1, ale nefunguje s localhost?