DBMS_WM在Oracle DB中带有条件的导出

问题描述

我的Oracle数据库中有一些版本表。
我需要将这些表从一个数据库导出到另一数据库,但要基于某种条件。
我使用了以下oracle-docs中的代码 我需要根据sql导出到Workspace下面。

/*    LT table with join condition */         
    SELECT
        H1.workspace,count(*)
        FROM  WMSYS.ALL_VERSION_HVIEW H1,EMPLOYEE_LT M1,DEPT_LT t1 
        WHERE H1.version=M1.wm_version 
        and t1.empid=M1.empid 
        and t1.deptid in (select d_id
                            from DEPT_LOC
                           where Location = 'norWAY'
                          );

enter image description here

这是我的出口代码

execute dbms_wm.Export('EMPLOYEE','EMPLOYEE_STG','WS-27917',export_scope=>DBMS_WM.EXPORT_MODIFIED_DATA_ONLY,AUTO_COMMIT=>TRUE);
execute dbms_wm.Export('EMPLOYEE','WS-38904','WS-39376',AUTO_COMMIT=>TRUE);

像上面一样,我对所有不同的工作区运行了相同的查询。 该查询输出就像我将使用在查询中传递的工作区创建EMPLOYEE_STG一样。

但实际上,整个Employee表已创建为EMPLOYEE_STG表,其中包含所有记录

/*    ONLY LT table */ 
SELECT
      H1.workspace,count(*)
      FROM  WMSYS.ALL_VERSION_HVIEW H1,EMPLOYEE_LT M1
      WHERE H1.version=M1.wm_version
group by  H1.workspace                       
    ;

/*    STG table after dbms_wm.export() */     
    SELECT WM$WORKSPACE,count(*) 
    FROM EMPLOYEE_STG 
    group by WM$WORKSPACE;

enter image description here

现在,我只需要那些由于上述sql而来的工作空间,而不是完整的Employee表。 但是我的dbms_wm.export正在创建整个表格。

Oracle-docs中,我看到了下面类似where的条件,但是我不确定如何使用它。如何使用dbms_wm.export()中的查询

enter image description here

enter image description here

解决方法

最后,我成功地创建了一个有条件的导出表。步骤不是直接方式。 为此,需要使用Ref游标和记录类型变量。

--scopes=SCOPE