Pokud chcete použít rownum
a order by
máte zadat objednávku do dílčího dotazu. Neexistuje žádný jiný způsob, jak zaručit, že získáte správnou hodnotu.
Je také dobré se vypořádat s možností, že nemusí existovat id
který odpovídá vašemu dotazu. Přidal jsem další begin... end;
zablokujte, abyste se s tím vypořádali.
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;
/
Jak poznamenal @raukh (když jsem to psal!), problém je print
, což by mělo být dbms_output.put_line()