Как перечислить все таблицы пользователя в базе данных? N - PullRequest
0 голосов
/ 24 марта 2020

Привет, поэтому у меня следующий план: я хочу написать скрипт, который вызывает другой скрипт. Параметр V_USERNAME должен быть передан из 1-го сценария во 2-й сценарий. (Использование ключевого слова DEFINE)

Мой код выглядит следующим образом:

@@C:\Users\pe.k\Documents\script2.sql &p_v_username

set serveroutput on

define p_v_username =  "user";

Во 2-м сценарии все таблицы пользователя должен быть выведен. (Используя ключевое слово EXECUTE IMMEDIATE и курсор).

Управление выводом должно осуществляться с помощью параметра в сценарии или при вызове сценария.

Пример вызова: SQL> @ start_script1 MML

declare 
    &p_v_username  varchar2(100); 
    v_result    varchar2(100);
    cursor cp_username (&p_v_username varchar2) 
    is
        select owner, table_name           
        from all_tables
        where owner = &p_v_username  
        order by owner, table_name;       
begin 
     dbms_output.put_line('Alle Tabellen der User'); --l_username);
     open cp_username(&p_v_username);
     --loop
         --fetch cp_username into v_result;
        -- dbms_output.put_line(v_result);
    --end loop;
     close cp_username;
end;
/   

И у меня есть ошибки, и я потерялся. Я не знаю, как это сделать

1 Ответ

1 голос
/ 24 марта 2020

Ваша вторая процедура должна выглядеть примерно так:

BEGIN
    DBMS_OUTPUT.PUT_LINE('Alle Tabellen der User'); --l_username);
    FOR TABS IN (
        SELECT OWNER, TABLE_NAME
        FROM ALL_TABLES
        WHERE OWNER = '&P_V_USERNAME'
        ORDER BY OWNER, TABLE_NAME
    ) LOOP
        DBMS_OUTPUT.PUT_LINE(TABS.TABLE_NAME);
    END LOOP;
END;
/

Чтобы напечатать вывод, сгенерированный пакетом DBMS_OUTPUT из PL / SQL, убедитесь, что set serveroutput on

...