У меня есть пакет с функцией в нем, как и следующая, которая ожидает один из параметров, который является массивом.Невозможно вызвать функцию Oracle
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: wrong number or types of arguments in call to 'GET_SELECTED_KML'
Может кто-то пожалуйста предложить мне, что я делаю не так?
Спасибо, Alankar
Вы в основном ударяя [это ограничение совместимости данных] (http://docs.oracle .com/CD/E11882_01/appdev.112/e25519/composites.htm # autoId15); хотя типы вашей коллекции имеют один и тот же тип элемента, они не рассматриваются как эквивалентные. Поэтому вы пытаетесь вызвать функцию с другим типом, которую она ожидает. Как показывает ответ Джастина, вы должны использовать точно такой же тип коллекции. –