我有一个具有这种结构的存储过程:
CREATE OR REPLACE PROCEDURE refresh_mv(p_mv_name VARCHAR2) AS
BEGIN
EXECUTE IMMEDIATE '
CREATE MATERIALIZED VIEW ' || dbms_assert.simple_sql_name(p_mv_name) || '
PARALLEL
NOLOGGING
NEVER REFRESH
AS
SELECT * FROM <biq_query>';
EXECUTE IMMEDIATE
'CREATE OR REPLACE VIEW outside_view AS SELECT * FROM '||p_mv_name;
-- DROP old mv?
END;
从 SQL 开发人员内部执行此操作时,OEM 会在活动中正确显示实体化视图语句。但是,当从链内的 oracle 调度程序运行相同的过程时,会生成一个 create table as select 语句。因此,我是否会受到一些性能影响,以及为什么连锁店决定使用 CTAS 而不是 MV?