dbms_output.put_line
n'est pas surchargé pour accepter un argument booléen. Vous pouvez faire quelque chose comme
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
pour convertir le booléen en une chaîne que vous pouvez ensuite passer à dbms_output
.
L'erreur ORA-01422 est un problème complètement distinct. La fonction checkEmpNo
inclut le SELECT INTO
déclaration
SELECT emp_id
INTO emp_number
FROM emp;
Un SELECT INTO
générera une erreur si la requête renvoie autre chose qu'une ligne. Dans ce cas, s'il y a plusieurs lignes dans le emp
table, vous obtiendrez une erreur. Je suppose que vous voudriez que votre fonction fasse quelque chose comme
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;