【问题标题】:Calling a stored PROCEDURE in Toad在 Toad 中调用存储的 PROCEDURE
【发布时间】:2013-01-16 08:53:08
【问题描述】:

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

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.

【问题讨论】:

  • Toad 是一个 基于 GUI 的客户端工具,与 SQL*Plus 不同。因此,您可以直接查看过程并从工具本身执行它。

标签: oracle stored-procedures toad


【解决方案1】:

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

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

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

exec proc(1);

begin
proc(1);
end;

【讨论】:

  • 如果过程返回游标,只需声明它,然后执行以下操作: :output := cursor;这将在数​​据网格中打印光标内容。
  • 还有一件有用的事情——你可以像这样使用输出游标的所有存储过程: exec package_name.procedure_name('param', 'param2', :0) 你将在数据网格中获得游标内容.
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-23
    • 2014-06-09
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 2014-02-18
    • 2012-09-10
    • 1970-01-01
    相关资源
    最近更新 更多