如何解决如何基于Oracle用户的输入来创建动态视图?
例如,我必须为特定员工创建一个视图,该视图存储最近50天的出勤信息,而我的员工人数超过了
我将输入员工ID作为输入,并且我希望仅为该员工及其出勤详细信息的最后50天创建此视图。
简单的解释将不胜感激。
谢谢。
解决方法
视图只是存储的查询。因此,如果您始终只需要最近50天,那么
create or replace view v_50 as
select empno,ename,date_in,date_out
from attendance
where date_in >= trunc(sysdate) - 50
然后为您需要的任何员工获取数据:
select *
from v_50
where empno = 1234;
另一方面,您根本不需要视图-在原始表中执行相同操作:
select empno,date_out
from attendance
where empno = 1234
and date_in >= trunc(sysdate) - 50
确保empno
和date_in
都已建立索引,并定期收集统计信息。
要检索特定月份的数据,一种选择是
select ...
from attendance
where to_char(date_in,'yyyymm') = '202009'
基于函数的索引会有所帮助;否则,您将不得不使用类似
where date_in between date '2020-09-01' and date '2020-03-30'
如果date_in
被编入索引,则to_char
-将无法使用这样的索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。