Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何在PL-SQL中创建参数化物化视图_Oracle_Plsql_Oracle11g - Fatal编程技术网

Oracle 如何在PL-SQL中创建参数化物化视图

Oracle 如何在PL-SQL中创建参数化物化视图,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我需要通过每月(字符串)与每个手动MV(Materialized View)刷新下面的视图操作 如果这是可能的,请让我知道我如何才能做到这一点?如果不可能,我还有其他选择吗 CREATE MATERIALIZED VIEW my_warranty_orders AS SELECT w.order_id, w.line_item_id, o.order_date FROM warranty_orders w, orders o WHERE o.order_id = o.order

我需要通过每月(字符串)与每个手动MV(Materialized View)刷新下面的视图操作

如果这是可能的,请让我知道我如何才能做到这一点?如果不可能,我还有其他选择吗

CREATE MATERIALIZED VIEW my_warranty_orders
   AS SELECT w.order_id, w.line_item_id, o.order_date
   FROM warranty_orders w, orders o
   WHERE o.order_id = o.order_id
   AND o.sales_rep_id = 165
   AND O.order_month = p_argument --pass the month
   ;

使用常量值并每次使用不同的常量重新创建物化视图,而不是刷新它:

CREATE OR REPLACE MATERIALIZED VIEW my_warranty_orders
   AS SELECT w.order_id, w.line_item_id, o.order_date
      FROM   warranty_orders w
             INNER JOIN orders o
             ON ( o.order_id = o.order_id )
      WHERE  o.sales_rep_id = 165
      AND    o.order_month  = DATE '2016-06-01';
或者创建另一个表并将其连接到物化视图中:

CREATE TABLE my_warranty_orders_month (
  month DATE PRIMARY KEY
);

INSERT INTO my_warranty_orders_month VALUES ( DATE '2016-06-01' );

CREATE MATERIALIZED VIEW my_warranty_orders
   AS SELECT w.order_id, w.line_item_id, o.order_date
      FROM   warranty_orders w
             INNER JOIN orders o
             ON ( o.order_id = o.order_id )
             INNER JOIN my_warranty_orders_month m
             ON ( o.order_month = m.month )
      WHERE  o.sales_rep_id = 165;
然后,当您要更改它时:

UPDATE my_warranty_orders_month
SET month = DATE '2016-07-01';

并刷新物化视图。

使用dbms_应用程序_info.set_client_info或上下文变量值作为mview的参数,并在每次刷新mview时重置上下文/客户端信息如何?

感谢您的反馈。仍然在寻找更好的方式来刷新与婴儿车MV。但你的第二个选择是我跟踪作为首要解决办法。