簡體   English   中英

如何根據用戶在 Oracle 中的輸入創建動態視圖?

[英]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
  

確保empnodate_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM