使用 out 参数 = null 调用 plsql 过程

问题描述

我注意到从 PLsql 开发人员 sql 窗口调用一个过程。 我的请求脚本是:

begin
someProcedure(arg1 => 22222,arg2 => 0,arg3 => arg3)
end

arg1 和 arg2 为“in”类型,arg3 为“out”类型。 程序声明如下:

procedure someProcedure(arg1 in number,arg2 in number,arg3 out number)

当我在测试窗口测试这个过程时,我可以只给出 arg1 和 arg2,让 arg3 像 arg3 := arg3,但是当我试图用上面的脚本从 sql 窗口调用过程时,我得到了变量声明错误

arg3 是可选参数,实际上我不知道它应该是什么。

这是我遇到的 3 个错误案例:

  1. arg3 => arg3 错误:应声明 arg3 的 id
  2. arg3 => :arg3 错误:ora-01008
  3. arg3 => 输出号码 错误:ora-06550
  4. arg3 => 空 错误:pls-00306

如何使用等于空的arg3参数从sql窗口调用过程?

解决方法

因为它是一个 OUT 参数,所以你必须有“东西”来放入那个值。一种选择是局部变量:

declare
  l_out number;                       --> why NUMBER? You said so
begin
  someProcedure(arg1 => 22222,arg2 => 0,arg3 => l_out);       --> use it here
end;