標籤:os ar 使用 sp 資料 on bs ad as
額,一直提起遊標就頭疼,總感覺是很高大上的東西,望而卻步...
今天要做的東西涉及到了即時更新資料,要用到JOB 預存程序 遊標
通過在網上查資料,請教同事,也開始繼續深入oracle,,,,小菜啊小菜。。。
做個筆記,方便以後查看
CREATE OR REPLACE PROCEDURE COST_MES_SL_INIT_SP_001(P_SYSDATE DATE) IS
V_P_SYSDATE DATE;
V_YEAR NUMBER;
V_MONTH NUMBER;
CURSOR C_FACILITY_ID IS --建立遊標
SELECT FACILITY_ID
FROM COST_BASE_FACILITY_VW
WHERE 1 = 1 /* FACILITY_ID IN (SELECT FACILITY_ID
FROM ZZYX_USER_JLMES_FACILITY_TB T
WHERE USER_ID = {$SYS_USERID$})*/
AND U_LOWER = 1
ORDER BY U_ORDER;
R_FACILITY_ID C_FACILITY_ID%ROWTYPE; 定義遊標變數,我理解為對象
BEGIN
V_P_SYSDATE := P_SYSDATE;
SELECT ADD_MONTHS(TRUNC(SYSDATE), -1) INTO V_P_SYSDATE FROM DUAL; --擷取上個月的日期
V_YEAR := EXTRACT(YEAR FROM V_P_SYSDATE); --年
V_MONTH := EXTRACT(MONTH FROM V_P_SYSDATE);--月
OPEN C_FACILITY_ID;--開啟遊標
LOOP--開始迴圈遊標
FETCH C_FACILITY_ID
INTO R_FACILITY_ID;
EXIT WHEN C_FACILITY_ID%NOTFOUND;
COST_MES_SL_INIT_SP(R_FACILITY_ID.FACILITY_ID, V_YEAR, V_MONTH); --調用另一個預存程序
END LOOP; --結束迴圈
CLOSE C_FACILITY_ID; --關閉遊標
COMMIT;
END COST_MES_SL_INIT_SP_001;
oracle 遊標的使用