SQL * Plus-后台处理到多个文件中

问题描述 投票:0回答:1

我有将user_tables的DDL存储到文件中的下一个假脱机:

set pagesize 0
set long 90000
spool C:\Users\personal\Desktop\MAIN_USR\test.txt
select DBMS_METADATA.GET_DDL('TABLE',table_name,'MAIN_USR')
FROM user_tables ut;
spool off
exit

它将所有user_tables的DDL返回到单个文件中,但是我需要使其更具动态性,并使用各自表的文件名将它们返回到单独的文件中。像这样的东西:

set pagesize 0
set long 90000
FOR tab_nam IN (SELECT table_name FROM user_tables) LOOP
   spool C:\Users\personal\Desktop\MAIN_USR\test.txt
      select DBMS_METADATA.GET_DDL('TABLE',table_name,'MAIN_USR')
      FROM user_tables ut;
   spool off
END LOOP;
exit

我知道上面的那个是行不通的,但这有点像我想做什么。

我非常感谢您的帮助

oracle for-loop plsql sqlplus spool
1个回答
0
投票

您需要阅读USER_TABLES才能创建对DBMS_METADATA.GET_DDL的N个调用,每个调用都有其自己的假脱机文件。

然后运行刚刚假脱机的文件

@out.sql
© www.soinside.com 2019 - 2024. All rights reserved.