对不起,另外代码不对。我所要做的只是将变量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分享这个。 –