关于Oracle依据时间条件查找的问题

我要从Oracle数据库中查询一条数据,SQL语句如下:

    select  
        tb.data1  
    from table tb 
    where to_char(tb.date,'yyyy-MM-dd') = '2018-12-06'

要实现的功能是:

如果2018-12-06这天查出的数据为空,则时间向前推一天继续查找,也就是继续查2018-12-05的数据;
如果还没有查找到,继续向前推一天,知道查到的数据不为空为止。
这个功能该怎么实现???
(不限存储过程、存储函数)

在线等。。。

存储过程的话,可以声名一个日期变量; 循环, 日期减一天; 直到查出数据或者当日期小于某天时停止.

按照你的描述写的就是存储过程。
不过要学会转弯,你想想你这个描述是不是等价于 小于等于指定日期的数据中,日期最大的数据呢?何必写个循环一天天找 ,明明一次性就能找到