我正在尝试执行一个具有关联数组作为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”时参数的数量或类型错误
答案 0 :(得分:2)
为此,在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.
答案 1 :(得分:1)
减速表示它接受String参数。看起来您正在尝试传递实体数组。你不能那样做。您需要传递数组中的各个元素。
dbms_output.put_line(p_fusion_cc.column1 || ' ' || p_fusion_cc.column2 ... );