Oracle

如何在 Oracle 中導出包含包和正文的包?

  • June 13, 2018

我正在使用膩子。如何在 Oracle 中使用 spool 將包及其正文導出到目前目錄中的文件?

謝謝

有兩種方法可以實現這一點

方式1:

SET HEAD OFF
SET ECHO OFF
SET FEED OFF
SET TERM OFF
SET LINE 1500
SET NEWPAGE NONE
set pagesize 0
SPOOL C:\temp\FILE_NAME.SQL
PROMPT CREATE OR REPLACE
select trim(text) from user_source
where name='PACKAGE_NAME' AND type='PACKAGE';
SPOOL OFF

方式二:

select dbms_metadata.get_ddl('PACKAGE','PACKAGE_NAME',USER) from dual;

@vercelli 建議的另一種方法是使用 Oracleexpdp實用程序導出包及其主體。一個美妙的方法:)

expdp scott/tiger@db10g schemas=SCOTT INCLUDE=PACKAGE LIKE 'PACKAGE_NAME' SQLFILE=scott.sql directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

希望這可以幫助 !!

問候。

用於SYS.DBMS_METADATA.GET_DDL獲取CLOB程式碼:

declare 
 myPackageSpec clob;
 myPackageBody clob;
BEGIN
   select dbms_metadata.get_ddl('PACKAGE_BODY', 'PACKAGE_NAME', 'SCHEMA') 
      into myPackageBody
     FROM DUAL;
   select dbms_metadata.get_ddl('PACKAGE_SPEC', 'PACKAGE_NAME', 'SCHEMA') 
     into myPackageSpec 
   FROM DUAL;

 dbms_output.put_line(myPackageSpec);
 dbms_output.put_line(myPackageBody);
end;

您也可以expdp從命令行使用,然後impdp使用sqlfile

expdp scott/tiger@db10g schemas=SCOTT INCLUDE=PACKAGE SQLFILE=scott.sql directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
impdp scott/tiger@db10g SQLFILE=scott.sql directory=TEST_DIR dumpfile=SCOTT.dmp logfile=impdpSCOTT.log

引用自:https://dba.stackexchange.com/questions/147831