如何在数据库中列出用户的所有表?n



嗨,所以我有以下计划:我想写一个脚本,它调用另一个脚本。参数V_USERNAME应从第一个脚本传递到第二个脚本。(使用关键字DEFINE(

我的代码看起来像:

@@C:Userspe.kDocumentsscript2.sql &p_v_username
set serveroutput on
define p_v_username =  "user";

在第二个脚本中,应该输出用户的所有表。(使用关键字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;
/   

我有错误,我迷失了方向。我不知道怎么做

您的第二个过程应该是这样的:

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

为了从PL/SQL打印DBMS_output包生成的输出,请确保set serveroutput on

最新更新