在Toad中调用存储的PROCEDURE

use*_*619 8 oracle toad stored-procedures

我有一个新的存储过程,但在调用时出错,

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;
Run Code Online (Sandbox Code Playgroud)

并试图称之为:

getempsal(1,'JAN',OUT) --Invalid sql statement.
Run Code Online (Sandbox Code Playgroud)

Flo*_*ita 15

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

declare
a number;
begin 
  getempsal(1,'JAN',a);
  dbms_output.put_line(a);
end;
Run Code Online (Sandbox Code Playgroud)

可以调用一个简单的过程(比如使用数字参数)

exec proc(1);
Run Code Online (Sandbox Code Playgroud)

要么

begin
proc(1);
end;
Run Code Online (Sandbox Code Playgroud)

  • 如果procedure返回游标,只需声明它然后执行以下操作:: output:= cursor; 这将在数​​据网格中打印光标内容. (2认同)