在Oracle中,我想使用dbms_datapump导出表。我有一个表,其中包含要导出其子集的表名列表,其中grp=“batch1”。我想循环遍历这些表名中的每一个,并将表名传递给metadata_filter。然而,它不起作用。我特别想在一个循环中做到这一点。
以下是代码的一些摘录:
CURSOR lib_cur IS
SELECT table_name
FROM my_table_list
WHERE grp = 'batch1';
稍后在代码中:
for x in lib_cur
LOOP
table_nm := x.table_name;
dbms_datapump.metadata_filter
(handle => my_job_handle,
name => 'NAME_EXPR',
value => 'IN (''' || table_nm || ''')' ,
object_type => null);
有人知道为什么不将table_nm的当前值传递给dbms_datapump.metadata_filter的值参数吗?如果我硬编码其中一个我想要的实际表名,例如“表1”,它可以正常工作。
我知道我的循环将正确的表名输入到table_nm变量中,因为我已经将它们输出到dbms_output,并且可以看到循环的每次迭代都会产生不同的表名。
所以,有什么想法为什么这个名字没有在我的循环中传递吗?我不知道是语法不正确,还是不可能这样做?问题是,我确信我不久前就用过了!