如果你想使用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()