我可以在 oracle 中创建参数化视图吗

snd*_*eli 0 oracle view parameterized

我有一个这样的查询

SELECT ID,REF_ID,BATCHNO FROM reporttbl
where POSTING_DT >= '06/01/2020' and POSTING_DT <= '06/30/2020'
Run Code Online (Sandbox Code Playgroud)

我每个月都需要它,所以我想把它放在一个视图中,但是随着日期每个月都在变化,如果有一个日期参数可以在调用它时传递给视图,那就太好了。有什么办法可以实现这一目标吗?我是 oracle 的新手,感谢每一个帮助。谢谢你。

Chr*_*xon 6

从 19.6 开始,您可以使用SQL 宏创建参数化视图。

create or replace function get_month (
  tab dbms_tf.table_t, start_date date, end_date date
) return varchar2 sql_macro as
  retval int;
begin
  return 'select * from tab 
    where dt >= start_date and dt < end_date + 1';
end get_month;
/

create table t (
  c1 int, dt date
);

insert into t 
with rws as (
  select level c1, add_months ( date'2019-12-25', level ) dt 
  from   dual
  connect by level <= 10
)
  select * from rws;
  
select * from get_month ( 
  t, date'2020-06-01', date'2020-07-01' 
);

C1    DT                     
    6 25-JUN-2020 00:00:00    

select * from get_month ( 
  t, date'2020-08-01', date'2020-09-01' 
);

C1    DT                     
    8 25-AUG-2020 00:00:00   
Run Code Online (Sandbox Code Playgroud)

  • 感谢今天的*每天学习一个新的 Oracle 功能*! (2认同)