Функция создания и вызова - PullRequest
1 голос
/ 08 апреля 2020

Я создал эту функцию, но как только я пытаюсь вызвать ее, я получаю сообщение об ошибке.

Функция:

CREATE OR REPLACE FUNCTION check_email (
    p_user IN users.user_id%TYPE
) RETURN BOOLEAN AS
    p_email users.email%TYPE;
BEGIN
    SELECT
        email
    INTO p_email
    FROM
        users
    WHERE
        user_id = p_user;

    IF p_email IS NULL THEN
        RETURN false;
    ELSE
        RETURN true;
    END IF;
END check_email;

Вызов функции:

declare
result boolean := check_email(1);  
begin
DBMS_OUTPUT.put_line(result);
end;

Ошибка: PLS-00306: неверный номер или типы аргументов при вызове 'PUT_LINE'

1 Ответ

3 голосов
/ 08 апреля 2020

DBMS_OUTPUT.PUT_LINE ожидает аргумент VARCHAR2, а не логическое значение. Вы можете сделать это:

DBMS_OUTPUT.PUT_LINE (case when result then 'true' else 'false' end);

Или вы можете создать отдельную функцию, например bool_to_char, чтобы вы могли просто написать:

DBMS_OUTPUT.PUT_LINE (bool_to_char(result));
...