dbms_output.put_line
är inte överbelastad för att acceptera ett booleskt argument. Du kan göra något liknande
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
för att konvertera boolean till en sträng som du sedan kan skicka till dbms_output
.
ORA-01422-felet är ett helt separat problem. Funktionen checkEmpNo
inkluderar SELECT INTO
uttalande
SELECT emp_id
INTO emp_number
FROM emp;
En SELECT INTO
kommer att generera ett fel om frågan returnerar något annat än 1 rad. I det här fallet, om det finns flera rader i emp
tabell får du ett felmeddelande. Min gissning är att du skulle vilja att din funktion skulle göra något liknande
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;