【发布时间】:2013-04-20 12:25:40
【问题描述】:
我有一个包含如下函数的包,它需要一个参数是数组。
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;
现在我正在尝试从以下匿名块调用该函数:
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:调用“GET_SELECTED_KML”时参数的数量或类型错误
有人可以建议我吗,我做错了什么?
谢谢, 阿兰卡
【问题讨论】:
-
你基本上是在打this data compatibility restriction;尽管您的集合类型具有相同的元素类型,但它们不被视为等效。因此,您尝试使用与预期类型不同的类型调用该函数。正如贾斯汀的回答所示,您必须使用完全相同的集合类型。
标签: arrays function plsql oracle11g