【问题标题】:Function create and call函数创建和调用
【发布时间】:2020-07-20 17:14:34
【问题描述】:

我创建了这个函数,但是一旦我尝试调用它,就会出错。

功能:

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”时参数的数量或类型错误

【问题讨论】:

    标签: sql oracle function plsql


    【解决方案1】:

    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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 2021-08-17
      • 2013-12-26
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多