1
ausgeführt
ich diese gespeicherte Prozedur in Oracle geschrieben haben:zweite Anweisung in Block beginnen wird nicht
CREATE OR REPLACE FUNCTION GET_SOLVER_ID(username_in IN VARCHAR2)
RETURN NUMBER
IS
solver_id number(19);
system_user_id number(19);
BEGIN
SELECT id
INTO solver_id
FROM usr_solver
WHERE username = username_in;
select ID into system_user_id from USR_USER where USER_TYPE = 'X';
solver_id := nvl(solver_id, system_user_id);
RETURN(solver_id);
END;
Wenn ich die Funktion mit Benutzernamen aufrufen, die nicht in der Tabelle existiert usr_solver ich für das Ergebnis null erhalten. Ich erwarte stattdessen system_user_id.
Es scheint, als ob die andere SELECT-Anweisung und NVL-Funktion in begin Block nicht ausgeführt wurde.
Können Sie helfen, ich kann nicht sehen, der Grund, warum ...
Danke,
mismas
wollen Ihre erste Auswahl die NO_DATA_FOUND angehoben haben wird Ausnahme, wenn der Benutzername nicht existiert und die zweite Auswahl nicht ausgeführt wird. Sie müssen diese Ausnahme abfangen und entsprechend behandeln. –
Ich bin überrascht, dass Sie keine Ausnahme 'ORA-01403: keine Daten gefunden' bekommen. – Nitish
@Nitish werden sie nicht, wenn sie die Funktion in einer Select-Anweisung aufrufen. –