dbms_output.put_line
není přetížen, aby přijal booleovský argument. Můžete udělat něco jako
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
převést boolean na řetězec, který pak můžete předat dbms_output
.
Chyba ORA-01422 je zcela samostatný problém. Funkce checkEmpNo
obsahuje SELECT INTO
prohlášení
SELECT emp_id
INTO emp_number
FROM emp;
A SELECT INTO
vygeneruje chybu, pokud dotaz vrátí něco jiného než 1 řádek. V tomto případě, pokud je v emp
více řádků tabulky, dostanete chybu. Hádám, že byste chtěli, aby vaše funkce dělala něco jako
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;