尽管任务的措辞似乎并没有明确排除使用不同的内置函数,但在我看来,精神似乎是在寻找一种暴力方法来循环所有日期值 - 特别是从“比较所有相关日期的部分,尽管这仍然模棱两可。我想,这也取决于你已经学到了什么。
所以这是我对我认为任务的内容的看法:
set serveroutput on
declare
cursor reg_cur (registration i_booking.registration%type) is
select date_reserved
from i_booking
where registration = reg_cur.registration;
max_date date;
begin
for reg_row in reg_cur('<reg value>') loop
if max_date is null or reg_row.date_reserved > max_date then
max_date := reg_row.date_reserved;
end if;
end loop;
dbms_output.put_line('Most recent date is: ' || to_char(max_date, 'YYYY-MM-DD'));
end;
/
这会跟踪迄今为止看到的最新日期,并在循环的每次迭代中检查当前光标值是否更新。当然,这是非常做作的,但这似乎是你所期待的。
也不清楚你应该如何处理这个值。dbms_output
也不适合这里的任何现实世界使用,所以也许你想要一个功能;这是函数形式的相同方法的SQL Fiddle。