Hvis du vil bruge rownum
og order by
du har at placere ordren efter i en underforespørgsel. Der er ingen anden måde at garantere, at du får den korrekte værdi.
Det er også god praksis at håndtere muligheden for, at der muligvis ikke er et id
der matcher din forespørgsel. Jeg har tilføjet en ekstra begin... end;
blok for at håndtere dette.
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;
/
Som @raukh bemærkede (mens jeg skrev dette!) er problemet print
, som skal være dbms_output.put_line()