我学习了在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;
任何帮助?
答案 0 :(得分:5)
一般来说,就像问题一样 - 如何在SQL * Plus中运行/测试......
测试一个接受标量参数并返回标量值的函数:
SELECT function_name(parm1, parm2) FROM DUAL;
测试程序:
EXEC procedure_name(parm1, parm2)
如果该过程通过REFCURSOR
参数返回SYS_REFCURSOR
或OUT
:
VAR x REFCURSOR
EXEC procedure_name(parm1, parm2, :x)
PRINT x
上面第二行中x
之前的冒号是必需的。其他两行(VAR
和PRINT
)不允许这样做。
如果您在SQL * Plus中测试特定函数或过程时遇到问题,请发布函数/ proc或至少发布它的声明。
要进行调试,请在要检查值的位置放置DBMS_Output.Put_Line
个调用。 DBMS_Output
包已记录在案here。在使用DBMS _Output
调用运行proc之前,请在SQL * Plus命令行中键入以下内容:
SET SERVEROUTPUT ON SIZE 50000
SIZE
是Oracle允许DBMS_Output
回显的字符数。 程序完成后,所有输出都将被发送回。