Jika Anda ingin menggunakan rownum
dan order by
Anda memiliki untuk menempatkan pesanan dalam sub-kueri. Tidak ada cara lain untuk menjamin bahwa Anda mendapatkan nilai yang benar.
Ini juga merupakan praktik yang baik untuk menangani kemungkinan bahwa mungkin tidak ada id
yang cocok dengan kueri Anda. Saya telah menambahkan begin... end;
additional tambahan blokir untuk menangani ini.
declare
v_id a.id%type;
begin
begin
select id into v_id
from ( select id
from a
where name = 'test'
order by id desc )
where rownum < 2
;
exception when no_data_found then
v_id := null;
end;
dbms_output.put_line(v_id);
doSomething(v_id);
end;
/
Seperti yang dicatat @raukh (saat saya menulis ini!) masalahnya adalah print
, yang seharusnya dbms_output.put_line()