pl/SQL for 循环
pl/SQL for loop
DECLARE
a number(2);
cnt number;
BEGIN
FOR a in 01 .. 12 LOOP
SELECT count(*)
INTO cnt
FROM ECMS_ONLINE_TRANSACTION eoa
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-01-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-01-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
dbms_output.put_line(' month: ' || a || ' time stamp 01:00:00- 01:59:59 number of transaction :' || cnt );
END LOOP;
END;
我在根据我在函数之间使用的子句中的循环更改月份时遇到问题 todate 函数的月份必须根据循环更改如果 a 变为 1 那么 where 子句中的月份有如果a变为2则按1更改月份已更改为2
敌人的例子
如果一个=1
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-01-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-01-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
如果一个=2
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-02-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-02-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
我使用了时间戳变量
使用这个条件:
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-' || lpad(a, 2, '0') || '-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-' || lpad(a, 2, '0') || '-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
写这个可能更简单(但它不会在 CREATETIME
上使用索引,如果你有的话):
WHERE to_char(eoa.CREATETIME, 'MM') = a
AND to_char(eoa.CREATETIME, 'HH24' = '01'
DECLARE
a number(2);
cnt number;
BEGIN
FOR a in 01 .. 12 LOOP
SELECT count(*)
INTO cnt
FROM ECMS_ONLINE_TRANSACTION eoa
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-01-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-01-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
dbms_output.put_line(' month: ' || a || ' time stamp 01:00:00- 01:59:59 number of transaction :' || cnt );
END LOOP;
END;
我在根据我在函数之间使用的子句中的循环更改月份时遇到问题 todate 函数的月份必须根据循环更改如果 a 变为 1 那么 where 子句中的月份有如果a变为2则按1更改月份已更改为2
敌人的例子
如果一个=1
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-01-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-01-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
如果一个=2
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-02-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-02-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
我使用了时间戳变量
使用这个条件:
WHERE eoa.CREATETIME BETWEEN TO_DATE('2021-' || lpad(a, 2, '0') || '-01 01:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2021-' || lpad(a, 2, '0') || '-01 01:59:59','YYYY-MM-DD HH24:MI:SS');
写这个可能更简单(但它不会在 CREATETIME
上使用索引,如果你有的话):
WHERE to_char(eoa.CREATETIME, 'MM') = a
AND to_char(eoa.CREATETIME, 'HH24' = '01'