arrays - 无法调用 Oracle 函数

标签 arrays function plsql oracle11g

我有一个包,里面有一个函数,如下所示,它需要一个参数,即数组。

create or replace PACKAGE selected_pkg IS

TYPE NUM_ARRAY IS TABLE OF NUMBER;

FUNCTION get_selected_kml(
  in_layer        IN NUMBER,
  in_solm_id      IN NUMBER,
  in_feature_ids  IN NUM_ARRAY, 
  in_lx           IN NUMBER,
  in_ly           IN NUMBER,
  in_ux           IN NUMBER,
  in_uy           IN NUMBER)
RETURN CLOB;

END selected_pkg;

现在我尝试从以下匿名 block 调用该函数:

declare
  result CLOB;
  TYPE NUM_ARRAY1 IS TABLE OF NUMBER;
  myarray NUM_ARRAY1 := NUM_ARRAY1 ();
begin
  myarray.extend(3);
  myarray(1) := 1;
  myarray(2) := 5;
  myarray(3) := 9;
  EXECUTE IMMEDIATE 'truncate table demoresult';
  result:=SELECTED_PKG.get_selected_kml(103, 19, myarray, 4.11, 56.27, 4.59, 56.39);
  insert into demoresult values(result);
  COMMIT;
end;

我收到错误

PLS-00306: wrong number or types of arguments in call to 'GET_SELECTED_KML'

有人可以建议我,我做错了什么吗?

谢谢, 阿兰卡

最佳答案

您需要使用与您的函数期望的相同的数组类型

declare
  result CLOB;
  myarray selected_pkg.num_array := selected_pkg.num_array();
begin
  myarray.extend(3);
  myarray(1) := 1;
  myarray(2) := 5;
  myarray(3) := 9;
  EXECUTE IMMEDIATE 'truncate table demoresult';
  result:=SELECTED_PKG.get_selected_kml(103, 19, myarray, 4.11, 56.27, 4.59, 56.39);
  insert into demoresult values(result);
  COMMIT;
end;

关于arrays - 无法调用 Oracle 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16234575/

相关文章:

java - 如何根据字符串创建数组

javascript - 将 null 放置在数组的开头

python - 数组中点之间的快速加权欧氏距离

Javascript 页面重新加载或元标记刷新方法?

arrays - Array append() 返回一个新数组

样式不起作用的 Javascript 函数参数

function - 在对象 slice 内搜索关键属性的简洁 Golang 方式

database - 如何在触发器内引发异常?有没有办法做到这一点?

plsql - 在 Firebird 中使用 Qt 存储过程

oracle - 我们能否找到哪个表导致ORA-00942表或 View 不存在。 :