执行过程Oracle 11g

亨里克

因此,我在Oracle 11g上创建了以下过程:

create or replace PROCEDURE calc_fee
(proc_borrowed_date IN Borrowing.borrowed_date%TYPE,
proc_return_date IN Borrowing.return_date%TYPE,
proc_fee OUT number)
IS
BEGIN
proc_fee := (SYSDATE - proc_return_date) * 2;
END calc_fee;​

如何执行?我已经尝试过了

EXEC CALC_FEE(SYSDATE - 10, SYSDATE);

执行CALC_FEE(SYSDATE-10,SYSDATE);

但是他们都返回我ORA-00900:无效的SQL语句

GolezTrol

您可以使用call(而不是exec)或在PL / SQL代码块中调用过程还要注意,您有三个参数,因此您需要传递一个变量以捕获输出参数:

declare
  V_FEE number;
begin
  CALC_FEE(SYSDATE - 10, SYSDATE, V_FEE);
  DBMS_OUTPUT.PUT_LINE(V_FEE);
end;

除了带out参数的过程,您还可以创建一个返回值的函数:

create or replace FUNCTION calc_fee
(proc_borrowed_date IN Borrowing.borrowed_date%TYPE,
proc_return_date IN Borrowing.return_date%TYPE) return number
IS
BEGIN
  return (SYSDATE - proc_return_date) * 2;
END calc_fee;

这样的功能甚至可以在查询中使用:

select CALC_FEE(SYSDATE - 10, SYSDATE) from dual

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章