Количество аргументов хранимой процедуры PLS-00306
-
26-09-2019 - |
Вопрос
У меня проблема с вызовом на процедуру.Oracle сбегает
PLS-00306 Ошибка:Неправильное количество типов аргументов при вызове процедуры.
Моя процедура объявления типа имеет точно такое же объявление, как в заголовке ниже.Если я запускаю ее как отдельную процедуру, она работает, когда я работаю в интерфейсе ODCI для создания расширяемого индекса, она выдает PLS-00306.
MEMBER PROCEDURE FILL_TREE_LVL
(target_column VARCHAR2, cur_lvl NUMBER, max_lvl NUMBER,
parent_rect NUMBER,start_x NUMBER, start_y NUMBER,
end_x NUMBER, end_y NUMBER)
IS
stmt VARCHAR2(2000);
rect_id NUMBER;
diff_x NUMBER;
diff_y NUMBER;
new_start_x NUMBER;
new_end_x NUMBER;
i NUMBER;
j NUMBER;
BEGIN
{...}
END FILL_TREE_LVL;
STATIC FUNCTION ODCIINDEXCREATE
(ia SYS.ODCIINDEXINFO, parms VARCHAR2, env SYS.ODCIEnv) RETURN NUMBER
IS
stmt VARCHAR2(2000);
stmt2 VARCHAR2(2000);
min_x NUMBER;
max_x NUMBER;
min_y NUMBER;
max_y NUMBER;
lvl NUMBER;
rect_id NUMBER;
pt_tab VARCHAR2(50);
rect_tab VARCHAR2(50);
cnum NUMBER;
TYPE point_rect is RECORD(
point_id NUMBER,
rect_id NUMBER
);
TYPE point_rect_tab IS TABLE OF point_rect;
pr_table point_rect_tab;
BEGIN
{...}
FILL_TREE_LVL('any string', 0, lvl,0, min_x, min_y, max_x, max_y);
{...}
END;
Решение
У меня нет опыта работы с ООП PL/SQL, но я предполагаю, что проблема возникает из-за того, что вы пытаетесь вызвать процедуру-член из статической функции.Процедура-член всегда нуждается в контексте объекта, которого нет в вызове.
Другие советы
Похоже, вам не хватает параметра, возможно, родительского_rect, я думаю:
FILL_TREE_LVL(target_column VARCHAR2,
cur_lvl NUMBER,
max_lvl NUMBER,
parent_rect NUMBER,
start_x NUMBER,
start_y NUMBER,
end_x NUMBER,
end_y NUMBER)
FILL_TREE_LVL('any string', --target_column
0, --cur_lvl
lvl, --max_lvl
min_x, --parent_rect
min_y, --start_x
max_x, --start_y
max_y --end_x
--end_y ???
);
Не связан с StackOverflow