dbms_output.put_line
er ikke overbelastet til at acceptere et boolsk argument. Du kan gøre sådan noget som
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
at konvertere boolean til en streng, som du derefter kan sende til dbms_output
.
ORA-01422-fejlen er et helt separat problem. Funktionen checkEmpNo
inkluderer SELECT INTO
erklæring
SELECT emp_id
INTO emp_number
FROM emp;
En SELECT INTO
vil generere en fejl, hvis forespørgslen returnerer noget andet end 1 række. I dette tilfælde, hvis der er flere rækker i emp
tabel, får du en fejl. Mit gæt er, at du gerne vil have din funktion til at gøre noget lignende
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;