dbms_output.put_line
không quá tải để chấp nhận một đối số boolean. Bạn có thể làm điều gì đó như
dbms_output.put_line( case when exist = true
then 'true'
else 'false'
end );
để chuyển đổi boolean thành một chuỗi mà sau đó bạn có thể chuyển tới dbms_output
.
Lỗi ORA-01422 là một vấn đề hoàn toàn riêng biệt. Hàm checkEmpNo
bao gồm SELECT INTO
tuyên bố
SELECT emp_id
INTO emp_number
FROM emp;
A SELECT INTO
sẽ tạo ra lỗi nếu truy vấn trả về bất kỳ thứ gì khác ngoài 1 hàng. Trong trường hợp này, nếu có nhiều hàng trong emp
bảng, bạn sẽ gặp lỗi. Tôi đoán là bạn muốn chức năng của mình hoạt động giống như
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;