利用runtime parameter .."expiration"
執行一次以後,一分鐘後這個cache就會過期了...不管你用showjobs或getjobid都無法再次讀取...
以下是隨便拉一個form出來的按鈕code
DECLARE
PL_ID PARAMLIST:= GET_PARAMETER_LIST( 'P_LIST' );
BEGIN
SYNCHRONIZE;
IF NOT ID_NULL( PL_ID ) THEN
DESTROY_PARAMETER_LIST( PL_ID );
END IF;
PL_ID := CREATE_PARAMETER_LIST( 'P_LIST' );
ADD_PARAMETER( PL_ID、'PARAMFORM'、TEXT_PARAMETER、'NO' );
ADD_PARAMETER(PL_ID,'expiration',TEXT_PARAMETER,'1');
--RUN_P_L 是我自己寫的run_report_object package
RUN_P_L('nolem1','localhost:8890',PL_ID,'S','test','REPORT1');
END;
form call report , 用run_report_object 這種方式,report 本身都是先產生檔案,form 在做show_doc...的動作把檔案用 browser 顯示出來的,
所以不管你用file 或是cache 都會在server 上產生檔案...一分鐘的過期動作,其實已經是沒辦法中的辦法了, 因為沒辦法確保,
你檔案產生之後,能在0.x 秒 立刻啟動另一個browser打開你要的cache file ,
所以不可能限制到秒這個動作...也就是expiration 這個參數為什麼會有一分鐘的buffer ...
好像從10g r2 開始有一種檔案格式叫做localfile , 但是目前這種格式是有bug的..
且目前可行的workaound 一樣是產生cache 在用mimetype 去強制他存到local pc ,
這麼來,也就表示一樣會在server上產生檔案..一分鐘內一樣可以用getjobid去取得...
所以目前真的要做到這樣的管控..就是不使用run_report_object ..而是直接關掉 showjob
和getjobid的功能, 報表執行方式則是使用 http://localhost:8890/reports/rwservelt?
report=test.rdf&despype=cache&desformat=pdf&........
這樣直接執行的方式..但這種方式..又衍生另一種問題..就是url 都把參數帶進來了..
所有user 自訂的參數又得要想辦法藏起來...且要加上執行許可權的設定,且要藏起這些參數...
就又必須要編修cgicmd.dat 這個檔案..把所有的報表以及參數全部藏起來用別名取代執行指令...
這反而更加的麻煩且不切實際.... 參考一下吧~