8

我定义了一个新的存储过程,但在调用它时出错,

CREATE OR REPLACE PROCEDURE SCOTT.getempsal(
        p_emp_id IN NUMBER,
        p_emp_month IN CHAR,
        p_emp_sal OUT INTEGER)

AS
BEGIN
    SELECT EMP_SAL
      INTO p_emp_sal
      FROM EMPLOYEE_SAL
    WHERE  EMP_ID = p_emp_id
    AND    EMP_MONTH = p_emp_month;

END getempsal;

并试图称之为:

getempsal(1,'JAN',OUT) --Invalid sql statement.
4

2 回答 2

16

您的过程包含一个 out 参数,因此您需要在块中调用它,例如:

declare
a number;
begin 
  getempsal(1,'JAN',a);
  dbms_output.put_line(a);
end;

可以调用一个简单的过程(假设带有数字参数)

exec proc(1);

或者

begin
proc(1);
end;
于 2013-02-01T04:21:29.520 回答
0

只需写 EXECUTE procedure_name('provide_the_valueof_IN parameter','value of in parameter', :k) ;

运行此语句,将弹出一个弹出窗口,将参数设置为 in out 和数据类型。U 将在另一个弹出窗口中看到输出。

于 2021-03-04T12:25:38.193 回答