Oracle:使用表类型输入变量

时间:2015-10-22 07:39:46

标签: sql oracle stored-procedures oracle11g

当我尝试调试现有应用程序时,我发现了一个执行显示错误的存储过程的方法。我想在我的Oracle SQLDeveloper上执行存储过程,给定过程:

type numTableType is table of NUMBER index by binary_integer;

PROCEDURE up_correction_status(p_exp_check_id IN numTableType, p_status_id NUMBER, p_user_id NUMBER, p_return OUT NUMBER);

但是,如何声明numTableType的价值?

我试图:

var p_return NUMBER;
execute "PKG_PDM_DASHBOARD".up_approved_corr_status(1, 2, 11, :p_return);
print p_return;

发现此错误:

  

在命令的第2行开始出错:   执行“PKG_PDM_DASHBOARD”.up_approved_corr_status(1,2,11,:p_return)   错误报告:   ORA-06550:第1行第8列:   PLS-00306:调用'UP_APPROVED_CORR_STATUS'时参数的数量或类型错误   ORA-06550:第1行第8列:   PL / SQL:忽略语句

只想执行它并获得返回值

1 个答案:

答案 0 :(得分:2)

您可以在包中使用type。在包裹之外,您必须create type

要执行具有此类复杂类型参数的过程,请使用pl / sql匿名块 执行模板:

declare
  X tableType;
begin
  X(1) := 1;
  P(X);
end;