dbms_output.put_line
non è sovraccaricato per accettare un argomento booleano. Puoi fare qualcosa come
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
per convertire il booleano in una stringa che puoi quindi passare a dbms_output
.
L'errore ORA-01422 è un problema completamente separato. La funzione checkEmpNo
include il SELECT INTO
dichiarazione
SELECT emp_id
INTO emp_number
FROM emp;
Un SELECT INTO
genererà un errore se la query restituisce qualcosa di diverso da 1 riga. In questo caso, se sono presenti più righe in emp
tabella, riceverai un errore. La mia ipotesi è che vorresti che la tua funzione facesse qualcosa del tipo
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;