如何从 oracle 过程返回关联数组类型输出参数



>我正在尝试执行一个将关联数组作为 out 参数之一的过程。 我不断收到一个错误,在调用put_line时说错误的参数数量或类型。

我尝试设置一个具有相同类型的变量,并在调用返回关联数组的过程时使用它。

DECLARE
P_MESSAGE VARCHAR2(4000);
P_FUSION_CC KPE_COA_VALUE_LOOKUP_PKG.P_FUSION_CC_TBL;
--v_fusion KPE_COA_VALUE_LOOKUP_PKG.P_FUSION_CC_TBL;
BEGIN
KPE_COA_VALUE_LOOKUP_PKG.GET_FUSION_CC('EBS 
COA','001:0069:274000:05045:038:000000',':',P_MESSAGE,P_FUSION_CC); 
DBMS_OUTPUT.PUT_LINE(p_fusion_cc);
END;

我收到此错误 PLS-00306:调用"PUT_LINE"时参数的数量或类型错误

在 PL/SQL 中访问关联数组的键值对或为此进行打印并不简单,应使用特定的循环序列。

这是一幅插图

declare
   type assoc_array_typ is table of varchar2(30) index by varchar2(30);
   l_assoc_array assoc_array_typ;
   l_idx varchar2(30);
begin
   l_assoc_array('First_name')   := 'Narendra';
   l_assoc_array('middle_name')  := 'Damodardas';
   l_assoc_array('Last_name')    := 'Modi';
   ---To print the array
   l_idx := l_assoc_array.first;
   while (l_idx is not null) loop
      dbms_output.put_line('Key = ' || l_idx || ',
                          Value = ' || l_assoc_array(l_idx));
      l_idx := l_assoc_array.next(l_idx);
   end loop;
   ---End printing
end;
/

输出

Key = First_name, Value = Narendra
Key = Last_name, Value = Modi
Key = middle_name, Value = Damodardas

PL/SQL procedure successfully completed.

减速表示它采用字符串参数。 看起来您正在尝试传递实体数组。你不能这么做。您需要从数组中传递各个元素。

 dbms_output.put_line(p_fusion_cc.column1 || ' ' || p_fusion_cc.column2  ... );

最新更新