如何在 SQL Plus 中测试功能

How test function in SQL Plus

如何在 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;
/

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

当然,我假设该函数编译正确 - 这意味着您的架构中确实有一个 table 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