dbms_output.put_line
não está sobrecarregado para aceitar um argumento booleano. Você pode fazer algo como dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
para converter o booleano em uma string que você pode passar para
dbms_output
. O erro ORA-01422 é um problema completamente separado. A função
checkEmpNo
inclui o SELECT INTO
declaração SELECT emp_id
INTO emp_number
FROM emp;
Um
SELECT INTO
irá gerar um erro se a consulta retornar algo diferente de 1 linha. Nesse caso, se houver várias linhas no emp
tabela, você receberá um erro. Meu palpite é que você gostaria que sua função fizesse algo como 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;