[英]How to create a dynamic view based on the input from a user in 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, ename, date_in, 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
-ing 它將無法使用這樣的索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.