यदि आप 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()