dbms_output.put_line
ブール引数を受け入れるためにオーバーロードされていません。あなたは次のようなことをすることができます
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
ブール値を文字列に変換し、dbms_output
に渡すことができます。 。
ORA-01422エラーは完全に別の問題です。関数checkEmpNo
SELECT INTO
が含まれています ステートメント
SELECT emp_id
INTO emp_number
FROM emp;
SELECT INTO
クエリが1行以外を返すと、エラーが生成されます。この場合、emp
に複数の行がある場合 テーブル、エラーが発生します。私の推測では、関数に次のようなことをさせたいと思います
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;