dbms_output.put_line не е претоварен, за да приеме булев аргумент. Можете да направите нещо като
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
за да преобразувате булевото значение в низ, който след това можете да подадете към dbms_output .
Грешката ORA-01422 е напълно отделен проблем. Функцията checkEmpNo включва SELECT INTO изявление
SELECT emp_id
INTO emp_number
FROM emp;
A SELECT INTO ще генерира грешка, ако заявката върне нещо различно от 1 ред. В този случай, ако има няколко реда в emp таблица, ще получите грешка. Предполагам, че бихте искали вашата функция да прави нещо като
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;