dbms_output.put_line
ist nicht überladen, um ein boolesches Argument zu akzeptieren. Sie können so etwas tun wie
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
um den booleschen Wert in einen String umzuwandeln, den Sie dann an dbms_output
übergeben können .
Der Fehler ORA-01422 ist ein völlig separates Problem. Die Funktion checkEmpNo
enthält den SELECT INTO
Erklärung
SELECT emp_id
INTO emp_number
FROM emp;
A SELECT INTO
generiert einen Fehler, wenn die Abfrage etwas anderes als 1 Zeile zurückgibt. In diesem Fall, wenn es mehrere Zeilen in emp
gibt Tabelle erhalten Sie eine Fehlermeldung. Ich vermute, Sie möchten, dass Ihre Funktion so etwas wie
CREATE OR REPLACE FUNCTION checkEmpNo(p_eno number)
RETURN boolean
IS
l_count number;
BEGIN
SELECT count(*)
INTO l_count
FROM emp
WHERE emp_id = p_eno;
IF( l_count = 0 )
THEN
RETURN false;
ELSE
RETURN true;
END IF;
END checkEmpNo;