Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да използвам променлива от курсор в оператора select на друг курсор в pl/sql

Трябва да използвате динамичен SQL, за да постигнете това; нещо като:

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

Редактирано за коригиране на две грешки и за добавяне на връзки към 10g документация за OPEN-FOR и пример .Редактирано за да направите заявката за вътрешния курсор низова променлива.



  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

  2. Внедряване на тип 2 SCD в Oracle

  3. Конвертиране на скрипт Coldfusion в изглед на Oracle с CASE и итерация

  4. Време за изчакване и работен процес на известието за промяна на данни на Oracle

  5. Oracle 10g:Могат ли дължините на CLOB данни да бъдат по-малки от 4000?