【发布时间】:2017-06-06 20:55:54
【问题描述】:
抱歉,代码太长了。我要做的就是将变量YM1 (201702, 201703, 201704) 增加一个月,执行 SQL 语句并使用 CURSOR 显示结果。
当前行为:YM1 变量未递增。代码执行但始终使用YM1 = '201702'。
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;
/
【问题讨论】: