【问题标题】:Passing a table of varchar2 to a procedure将 varchar2 表传递给过程
【发布时间】:2019-06-28 16:49:42
【问题描述】:

我需要一个带有接受 varchar2(255) 类型表参数的过程的包。

包装规格:

  type charArray is table of varchar2(255) index by binary_integer;

包体:

PROCEDURE call_me (p1 IN charArray, p2 IN VARCHAR2) IS ...

我尝试使用以下方法调用此过程:

declare
    type t_type is table of varchar2(255) index by binary_integer;

    l_array t_type;

begin

  l_array := ('131240');

  pkg._name.call_me (l_array, 'name');

end;

我收到此错误:

PLS-00306:调用“call_me”时参数的数量或类型错误

我做错了什么?

【问题讨论】:

  • l_array(1) := '131240'; dbms_output.put_line('-' || l_array(1));这可行,但我怎样才能将 l_array 传递给我的程序?

标签: oracle plsql


【解决方案1】:

你有两种类型声明了相同的定义,但这并不能使它们兼容。为了将表传递到包中,您必须使用包中声明的类型:

declare
    l_array pkg_name.charArray;    
begin
    l_array(1) := '131240';
    pkg_name.call_me (l_array, 'name');
end;

【讨论】:

  • 嗨,布赖恩,是的,你是绝对正确的,谢谢。像梦一样工作:)
猜你喜欢
  • 2010-12-08
  • 2019-12-03
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
相关资源
最近更新 更多