Ich habe eine Abfrage wie folgt:
%Vor% Normalerweise sollte diese Abfrage genau eine Zeile zurückgeben. Wenn für v_t_id
keine Übereinstimmung gefunden wird, schlägt das Programm mit der Ausnahme "Keine Daten gefunden" fehl.
Ich weiß, dass ich > das in PL / SQL handhaben kann, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, dies nur in einer Abfrage zu tun. Als Test habe ich es versucht:
%Vor% ... aber das wird natürlich nicht funktionieren (weil subq
leer ist nicht das gleiche wie subq.data_name is null
). Ist das überhaupt möglich oder sollte ich einfach meine PL / SQL-Lösung einchecken?
(Orakel 10g)
Es gibt Wege, um das einfacher und sauberer zu machen, aber das im Grunde buchstabiert die Technik:
%Vor%Wenn der erste Teil der Union leer ist, enthält der zweite Teil eine Zeile. Wenn der erste Teil nicht leer ist, enthält der zweite Teil keine Zeilen.
Wenn die Abfrage zu lange dauert, verwenden Sie diese:
%Vor%Ich würde es vorziehen, die Ausnahme zu behandeln. Dies funktioniert jedoch wie angegeben:
%Vor%Beachten Sie, dass dies auch "funktioniert", wenn die Abfrage more als 1 Zeile zurückgibt - d. h. TOO_MANY_ROWS wird nicht ausgelöst.
Ссылка Antwort ist nett, aber es gibt eine kürzere Lösung
%Vor%