Procedure中创建Materialized View
SQL=1:
 PROCEDURE Create_Materialize_View(table_name varchar2) IS
    createStr varchar(1000);
  BEGIN
  dbms_output.put_line(table_name);
    createStr := '
                 CREATE MATERIALIZED VIEW FMV_' ||
                 table_name || '
                 ON PREBUILT TABLE WITH REDUCED PRECISION
                 REFRESH FAST ON DEMAND
                 WITH PRIMARY KEY
                 FOR UPDATE
                 AS
                 SELECT * FROM ' || table_name ||
                 '@xxxxxxxxx';
       Dbms_Output.put_line(SQLCODE || SQLERRM);     
    execute immediate createStr;
   commit;
  exception
    when others then
      Dbms_Output.put_line(SQLCODE || SQLERRM);
  END;
当我执行是报权限不足但是把其中的执行部分拿出来
SQL-2:
CREATE MATERIALIZED VIEW FMV_' ||
                 table_name || '
                 ON PREBUILT TABLE WITH REDUCED PRECISION
                 REFRESH FAST ON DEMAND
                 WITH PRIMARY KEY
                 FOR UPDATE
                 AS
                 SELECT * FROM ' || table_name ||
                 '@xxxxxxxxx
执行却没有问题
如果要在Procedure中创建Materialized View必须添加以下权限(SQL-2 执行却不需要以下权限
--grant CREATE ANY MATERIALIZED VIEW to svarpt;grant create job to svarpt;
grant create evaluation context to svarpt;          -- create chain要的权限
grant create rule set to svarpt;                    -- create chain要的权限
grant create rule to svarpt;    请各位大侠指教。