PLS-00306:呼叫“有趣”的错误数量或类型的参数

时间:2017-10-11 09:54:37

标签: oracle plsql

我尝试使用在包范围内定义的表类型参数调用函数,但是出现错误:

  

PLS-00306:调用' fun'错误的参数数量或类型。

<div class="container">
   <div id="box_inside_1"></div>
   <div id="box_inside_2"></div>
   <div id="box_inside_3"></div>
</div>

有什么问题吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您不能在associative array中使用SQL(并且您不能在12c之前的Oracle版本中使用SQL中的包规范中声明的任何数组),但您可以存储{的结果{1}}函数转换为局部变量,然后将该变量插入表fun

t

此外,您将函数的结果插入表PROCEDURE proc () AS CURSOR aging_sch_cursor IS SELECT ... GROUP BY ...; v_aging_sch_row aging_sch_cursor%rowtype; v_aging_sch_table aging_sch_table_type; v_fun number; BEGIN FOR v_aging_sch_row IN aging_sch_cursor LOOP v_aging_sch_table(v_aging_sch_row.days_delq || ' ' || v_aging_sch_row.eligible).days_delq := v_aging_sch_row.days_delq; v_aging_sch_table(v_aging_sch_row.days_delq || ' ' || v_aging_sch_row.eligible).eligible := v_aging_sch_row.eligible; v_aging_sch_table(v_aging_sch_row.days_delq || ' ' || v_aging_sch_row.eligible).unit := v_aging_sch_row.unit; v_aging_sch_table(v_aging_sch_row.days_delq || ' ' || v_aging_sch_row.eligible).balance := v_aging_sch_row.balance; END LOOP; v_fun := fun(v_aging_sch_table,0,2) INSERT INTO t VALUES (v_fun); END proc; 而没有命名列 - 该表是否只有一列?如果没有,您应该为要插入数据的每一列命名,如:

t

如果你没有按字符串索引,你可以使用独立的对象类型和嵌套表,这些表可以在SQL中使用,但在你的情况下不是一个选项。