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;