我正在做一个需要我使用 2 个显式游标的练习。一个光标是获取第二个的参数。最终目标是根据注册找到每辆车的最新“租赁日期”。例如,注册号 345JKL 在 01/06/2010、07/09/2011 和 08/09/2013 租用。我希望它只返回最近的日期,即 08/09/2013,并且我希望它为表中的每个注册提供最近的日期。
我知道有更好的方法来做到这一点,例如 MAX、子查询等(我都不允许使用这两种方法),但作为“横向思维练习”,我需要在没有内置函数、子查询和其他让生活变得轻松的事情。
我有点坚持这个。
这是我到目前为止所拥有的,这让我无处可去:
declare
v_maxdate DATE;
v_reg VARCHAR2(20);
cursor reg_cur IS
SELECT * FROM i_car;
v_car reg_cur%ROWTYPE;
cursor c_reg (reg i_booking.registration%TYPE) IS
SELECT date_reserved from i_booking
WHERE registration = reg;
v_date c_reg%ROWTYPE;
begin
FOR v_date IN c_reg (v_car.registration) LOOP
v_maxdate := '01/JAN/90';
If v_date > v_maxdate THEN
v_maxdate := v_date;
end if;
end loop;
end;
它向我抛出了这个错误:
If v_date > v_maxdate THEN
*
ERROR at line 17:
ORA-06550: line 17, column 11:
PLS-00306: wrong number or types of arguments in call to '>'
ORA-06550: line 17, column 1:
PL/SQL: Statement ignored
我想,与其继续把头撞在桌子上,不如寻求指导。
感谢您的帮助。