在 Oracle ERP 的 Standard Alert 中,
有一個內定變數 :DATE_LAST_CHECKED,
用來取得觸發此 Event Alert 的時間,
範例, 如圖 :

declare
v_condition_value varchar2(100) := '&Condition';
cursor cur_data is
select ALERT_NAME
, SQL_STATEMENT_TEXT
from ALR_ALERTS;
begin
for rec_data in cur_data loop
if rec_data.SQL_STATEMENT_TEXT like '%'|| v_condition_value ||'%' then
dbms_output.put_line( rec_data.ALERT_NAME );
end if;
end loop;
end;
Cursor 在 Open 之後,
會把 Database 資料寫入到 SGA 記憶體中.
Cursor 在 Fetch 時,
資料是抓取 SGA 記憶體的資料,
所以要 Fetch 的資料筆數已確定.
如: Table 原有 5 筆資料,
在 Fetch 的同時對同一個 Table 做新增且 Commit,
但其 Cursor 迴圈數仍為 5 次.
Cursor 在 Fetch 時,
資料是抓取 SGA 記憶體的資料,
所以在 Fetch 的同時對同一筆資料的其他欄位 A 作修改後,
即使下 Commit,
但 Cursor 在讀取 A 欄位時, 仍為舊資料.
Fetch Cursor 已無資料 (NotFound) 時,
若繼續 Fetch 時,
其值為 Null.
若 Fetch 的資料有要確認是否為 Null 值時,
建議在 Fetch 資料至變數前,
先將變數值設定為 Null,
因為有些時候,
Fetch 無資料時,
變數值會保留上一次 Fetch 的資料.
this.getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN
, WindowManager.LayoutParams.FLAG_FULLSCREEN
);
this.requestWindowFeature( Window.FEATURE_NO_TITLE );
輸入 Alert 的 End Time (一天之中限定 Alert 執行的最後時間) 後,
Check Interval (時間區間) 欄位便可輸入,
如要半小時執行一次, 便將 Check Interval 設定為 00:30:00 即可.
for i in n..m loop
...
end loop;
for i in reverse n..m loop
...
end loop;
declare cursor cur_data is select ...; begin for rec_data in cur_data loop ... end loop; end;
for rec_data in (select ...) loop
...
end loop;