我在同名的预建表上有一个物化视图。当尝试使用DBMS_METADATA.GET_DDL()
获取物化视图的 DDL 时,我得到ORA-01427: single-row subquery returns more than one row from inside DBMS_METADATA
。这是一个最小的例子:
SQL> create table mv_test as select * from dual;
Table created.
SQL> create materialized view mv_test
2 on prebuilt table
3 refresh force on demand as
4 select *
5 from dual;
Materialized view created.
SQL> select dbms_metadata.get_ddl('MATERIALIZED_VIEW', 'MV_TEST', user) from dual;
ERROR:
ORA-01427: single-row subquery returns more than one row
ORA-06512: at "SYS.DBMS_METADATA", line 5746
ORA-06512: at "SYS.DBMS_METADATA", line 8333
ORA-06512: at line 1
no rows selected
SQL>
直接分配给 PL/SQL 中的变量以及在 PL/SQL 中使用 SQL 时会发生同样的错误。
这不是特别理想...我假设发生错误是因为表和物化视图具有相同的名称并且GET_DDL()
将多行返回到我的 SELECT 中。
我只想要一行 - 物化视图的行。我在对GET_DDL()
. 我不想返回表的 DDL。
进一步的几点:
- 中可用的对象类型列表
DBMS_METADATA
不区分物化视图和预建表上的物化视图 - 表格和物化视图均未编辑
- 甲骨文版本 12.1.0.1
我怎样才能只获得物化视图的 DDL。