Wenn Sie rownum
verwenden möchten und order by
Sie haben um die Bestellung in eine Unterabfrage zu stellen. Es gibt keine andere Möglichkeit, sicherzustellen, dass Sie den richtigen Wert erhalten.
Es empfiehlt sich auch, mit der Möglichkeit umzugehen, dass es möglicherweise keine id
gibt das passt zu deiner Anfrage. Ich habe ein zusätzliches begin... end;
hinzugefügt blockieren, um damit umzugehen.
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;
/
Wie @raukh feststellte (während ich dies schrieb!), ist das Problem print
, was dbms_output.put_line()
sein sollte