Ако искате да използвате rownum
и order by
вие имате за да поставите реда по в подзаявка. Няма друг начин да се гарантира, че получавате правилната стойност.
Също така е добра практика да се справите с възможността да няма id
който отговаря на вашата заявка. Добавих допълнителен begin... end;
блокирайте, за да се справите с това.
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;
/
Както @raukh отбеляза (докато писах това!) проблемът е print
, което трябва да бъде dbms_output.put_line()