0 • 0wxcbv • 4个月前 • 290次点击
grammar设置的是oracle
脚本:
SELECT TO_CHAR(sysdate - 6 + ROWNUM - 1, 'yyyymmdd') AS daylist
FROM DUAL
CONNECT BY ROWNUM <=
trunc(to_date(to_char(sysdate, 'yyyymmdd'),
'yyyymmdd') -
to_date(to_char(sysdate - 6, 'yyyymmdd'),
'yyyymmdd')) + 1
错误信息是:SQL 错误 [42710]: ERROR: CONNECT BY loop in user data使用connect by 生成指定时间的连续日期报错
select TO_CHAR(sysdate - 6 + level - 1, 'yyyymmdd')
from dual
connect by level<=7
sql语句有问题,产生了死循环。
解决方法:
方案1:在connect by 后面加上nocycle,不循环。结果可能就不是想要的结果。
antdb=# /*ora*/ SELECT TO_CHAR(sysdate - 6 + ROWNUM - 1, 'yyyymmdd') AS daylist
antdb-# FROM DUAL
antdb-# CONNECT BY NOCYCLE ROWNUM <=
antdb-# trunc(to_date(to_char(sysdate, 'yyyymmdd'),
antdb(# 'yyyymmdd') -
antdb(# to_date(to_char(sysdate - 6, 'yyyymmdd'),
antdb(# 'yyyymmdd')) + 1;
DAYLIST
----------
20230706
(1 row)
方案2:查出造成死循环的原因,修改sql。
select TO_CHAR(sysdate - 6 + level - 1, 'yyyymmdd')
from dual
connect by level<=7