【问题标题】:Ora Error - 06553 - Wrong number of arguments in a callOra 错误 - 06553 - 调用中的参数数量错误
【发布时间】:2016-08-25 18:03:56
【问题描述】:

我创建了一个类型如下:

create   type colist_array as table of varchar(3);

创建函数:

create or replace function  sel_tst(colm_lst  colist_array)
return      colist_array
as
--Declaration and Initialization
a  colist_array := colist_array();

begin

for i in 1..colm_lst.count
loop
  a.extend;
  a(i):= colm_lst(i);

end loop;

return (a);

end;  

现在调用时,它会抛出错误 -

参数数量错误

这里有任何建议。

 select sel_tst('XXY') from dual;  -- Not working
 select sel_tst('XXY,SDD,DFS')   from dual; -- Not working
 select sel_tst('XXY','YDY') from dual;  -- Not working

【问题讨论】:

  • 您的函数需要一个 single 参数(它是一个数组)。您使用 两个 参数调用它。
  • 另外你应该使用varchar2而不是varchar
  • @vercelli:没关系。 varcharvarchar2 的别名
  • 来自 Oracle Docs:“VARCHAR 数据类型与 VARCHAR2 数据类型同义。为避免可能的行为变化,请始终使用 VARCHAR2 数据类型存储可变长度字符串。”
  • 感谢您做出如此精彩的解释。我的问题不是我的类型是否正确。我的问题与选择有关,我想这里的一位绅士已经很好地回答了它。再次感谢

标签: oracle plsql oracle11g


【解决方案1】:

您的函数需要colist_array 类型的单个 参数。您使用一个或多个 varchar 参数调用它。

创建类型实例的正确语法是例如:colist_array('XXY','SDD','DFS')

所以你的选择语句应该是:

select sel_tst(colist_array('XXY','SDD','DFS'))
from dual;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多