0
我正在做一個操作,需要我使用2個顯式遊標。一個遊標是獲取第二個參數。最終目標是根據註冊查找每輛車的最近「租賃日期」。例如,註冊345JKL在01/06/2010,07/09/2011和08/09/2013出租。我希望這隻返回最新的日期,即08/09/2013,我希望它爲表中的每個註冊提供最近的日期。使用2個遊標,一個獲取另一個的參數
我知道有更好的方法來做到這一點,比如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
我想通,而不是繼續一聲我的頭在桌子上我會尋求指導。
您的幫助表示讚賞。
你不需要遊標。你可以愉快地加入這兩張桌子。 – wildplasser
正如我所說,練習的一部分就是這樣做,這是一個肛交,但它是這樣。 – Splunk
是的,如果你還沒有開始,遊標就像吸菸一樣。我工作過的大多數公司都使用遊標,通常會導致嚴重的熱水。去看看RBAR並瞭解爲什麼我們不在現實世界中使用遊標。 – Namphibian