4

我学习了在 pl-sql 中编写函数和过程的基础知识,但我不知道如何测试它是否工作,如果没有,我该如何调试它。请有任何想法。谢谢大家。这是我要测试的功能

CREATE OR REPLACE FUNCTION MIN_MAX_SAL RETURN NUMBER AS 
cursor emp_cur is select salary from employees ;
emp_sal number;
min_sal jobs.min_salary%type;
max_sal jobs.max_salary%type;
BEGIN
select min_salary , max_salary into min_sal , max_sal from jobs;
for emp_sal in emp_cur loop
if (emp_sal > max_sal or emp_sal < min_sal) then
return 0;
end loop;
RETURN 1;
END MIN_MAX_SAL;

有什么帮助吗?

4

1 回答 1

9

一般来说,就像这个问题 - 如何在 SQL*Plus 中运行/测试......

要测试接受标量参数并返回标量值的函数:

SELECT function_name(parm1, parm2) FROM DUAL;

要测试一个过程:

EXEC procedure_name(parm1, parm2)

如果过程通过参数返回一个REFCURSOR或:SYS_REFCURSOROUT

VAR x REFCURSOR
EXEC procedure_name(parm1, parm2, :x)
PRINT x

上面第二行中的冒号x是必需的。VAR在其他两行 (和PRINT)中是不允许的。

如果您在测试 SQL*Plus 中的特定函数或过程时遇到问题,请发布函数/过程或至少其声明。

要进行调试,DBMS_Output.Put_Line请在要检查值的地方进行调用。该DBMS_Output软件包在此处记录。在使用调用运行 proc 之前DBMS _Output,在 SQL*Plus 命令行中键入以下内容:

SET SERVEROUTPUT ON SIZE 50000

SIZE是 Oracle 允许DBMS_Output回显的字符数。程序完成,所有输出都将返回。

于 2013-05-22T21:48:27.053 回答