Ich schreibe eine Funktion, die den Namen eines Schülers zurückgibt, wenn eine ID eingegeben wird. Wenn eine ID eingegeben wird, die nicht in der Datenbank vorhanden ist, möchte ich eine Ausnahme auslösen. Stattdessen, wenn ich eine falsche Schüler-IDs eingeben, entweder es gibt nichts, wenn ich die grundlegende Ausnahme ausgelöst haben oder gibt diese Fehlermeldung mit einer Ausnahme erklärt:PLSQL Funktion, die die Ausnahme nicht korrekt auslöst
6503. 00000 - "PL/SQL: Function returned without value"
*Cause: A call to PL/SQL function completed, but no RETURN statement was
executed.
*Action: Rewrite PL/SQL function, making sure that it always returns
a value of a proper type.
Hier ist meine Funktion:
CREATE OR REPLACE Function STUDENT(S_NUM IN NUMBER)
RETURN varchar2 IS
STUDENT_NAME varchar2(50);
NOTEXISTS EXCEPTION;
cursor S_CUR is
SELECT S_NAME
FROM ROSTER
WHERE S_NUM = S_ID;
BEGIN
open S_CUR;
fetch S_CUR into STUDENT_NAME;
if S_CUR%notfound then
RAISE NOTEXISTS;
end if;
close S_CUR;
RETURN STUDENT_NAME;
EXCEPTION
WHEN NOTEXISTS THEN -- handle the error
dbms_output.put_line('NO STUDENT FOUND.');
END;
Irgendwelche Ideen?
Sie müssen eine Ausnahme im 'when' Teil" –
Oder "eine RETURN-Anweisung, z. B. RETURN NULL; – DCookie