代码之家  ›  专栏  ›  技术社区  ›  salk13

如何在SQL Plus中测试函数

  •  0
  • salk13  · 技术社区  · 7 年前

    如何在SQL Plus中测试此函数?

    CREATE OR REPLACE FUNCTION validid(
        p_deptid IN dept.deptno%TYPE
    )
    RETURN BOOLEAN IS
        v_dummy PLS_INTEGER;
    BEGIN
        SELECT 1
        INTO v_dummy
        FROM dept
        WHERE deptno = p_deptid;
    
        RETURN TRUE;
    
        EXCEPTION
            WHEN NO_DATA_FOUND THEN
                RETURN FALSE;
    END validid;
    /
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   mathguy    7 年前

    由于该函数返回布尔值,因此无法通过从SQL调用来测试它。您需要从PL/SQL调用它。下面我展示了一个小的匿名块,它调用函数并向屏幕输出一些内容。要查看结果,您可能需要执行命令 set serveroutput on 第一(这是一个SQL*Plus命令,不是SQL或PL/SQL,因此不需要以分号或斜杠结束。)

    当然,我假设函数编译正确——这意味着在模式中确实有一个表DEPT,并且它有一个列DEPTNO。否则会出现编译错误。

    set serveroutput on
    
    begin
      if validid(20) 
        then dbms_output.put_line('20 is valid');
        else dbms_output.put_line('20 is invalid');
      end if;
    end;
    /
    
    PL/SQL procedure successfully completed.
    
    20 is valid