對不起,另外代碼不對。我所要做的只是將變量YM1
(201702,201703,201704)增加一個月,執行SQL語句並使用CURSOR顯示結果。帶有LOOP的遊標
當前行爲:YM1
變量不遞增。該代碼執行但始終使用。
YEAR_MONTH 201701 201702 0
YEAR_MONTH 201701 201703 0
YEAR_MONTH 201701 201704 0
預期的結果:
YEAR_MONTH 201701 201702 0
YEAR_MONTH 201701 201703 10
YEAR_MONTH 201701 201704 20
請讓我知道我錯過了什麼。打破了我的頭。非常感謝時間。
set serveroutput on
DECLARE
YM VARCHAR2(10) := '201701';
YM1 VARCHAR2(10) := '201702';
row1 number := 0;
CURSOR counts is
SELECT COUNT(*)
FROM **table1 a**
WHERE a.year_month = YM
AND EXISTS
(SELECT 'Y'
FROM **table2 b**
WHERE a.id = b.id
AND b.year_month = YM1);
BEGIN
OPEN counts;
LOOP
FETCH counts INTO row1;
dbms_output.put_line('YEAR_MONTH '||YM||' '||YM1||' '||row1);
YM1 := TO_CHAR(ADD_MONTHS(TO_DATE(YM1,'YYYY-MM'), +1), 'YYYYMM');
EXIT WHEN YM1 > '201704'
END LOOP;
CLOSE counts;
END;
/
我試圖增加YM1。這是我上面粘貼的代碼中的一個拼寫錯誤,我使用了YM1:= TO_CHAR(ADD_MONTHS(TO_DATE(YM1,'YYYY-MM'),+1),'YYYYMM');請參閱** CURRENT RESULT **,YM是相同的(201701),但YM1只會在結果(201702,201703,201704)中遞增。希望這是明確的。 –
我剛剛給你我的執行輸出,它正在遞增..檢查一次 – Venkat
我想增加YM1並在EXISTS子句內的CURSOR塊中使用它。你的代碼缺少CURSOR,這是我想要實現的。感謝fir分享這個。 –