如何在pl-sql中测试函数是否正常工作?

时间:2013-05-22 21:40:10

标签: oracle function debugging plsqldeveloper

我学习了在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;

任何帮助?

1 个答案:

答案 0 :(得分:5)

一般来说,就像问题一样 - 如何在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之前的冒号是必需的。其他两行(VARPRINT)不允许这样做。

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

要进行调试,请在要检查值的位置放置DBMS_Output.Put_Line个调用。 DBMS_Output包已记录在案here。在使用DBMS _Output调用运行proc之前,请在SQL * Plus命令行中键入以下内容:

SET SERVEROUTPUT ON SIZE 50000

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