【问题标题】:Oracle : Execute Stored Procedure with table type input variableOracle:使用表类型输入变量执行存储过程
【发布时间】:2016-01-21 09:57:54
【问题描述】:

当我尝试调试现有应用程序时,我发现 1 方法是执行显示错误的存储过程。我想在我的 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:语句被忽略

只想执行它并获得返回值

【问题讨论】:

  • 程序的主体在哪里?
  • 抱歉,添加了一些信息

标签: sql oracle stored-procedures oracle11g


【解决方案1】:

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

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

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

【讨论】:

  • 你能告诉我如何执行那种程序吗
猜你喜欢
  • 2020-09-19
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 2011-06-19
  • 2013-11-25
相关资源
最近更新 更多