Anzahl der args für Stored Procedure PLS-00306
-
26-09-2019 - |
Frage
ich habe ein Problem mit meiner Prozedur aufrufen. Oracle SCRAMs
PLS-00306 Fehler:. Falsche Anzahl von Arten von Argumenten in Aufruf von Prozedur
Mit meinen Art Anmeldeverfahren hat genau die gleiche Erklärung wie in Kopf unten. Wenn ich es als separate Prozedur ausführen es funktioniert, wenn ich in ODCI Schnittstelle für erweiterbare Indexerstellung arbeiten, es wirft 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;
Lösung
Ich habe keine Erfahrung in PL / SQL OOP, aber ich denke, das Problem tritt auf, weil Sie versuchen, ein Mitglied Verfahren aus einer statischen Funktion aufzurufen. Ein Mitglied Verfahren braucht immer einen Objektkontext, der in dem Aufruf fehlt.
Andere Tipps
Sieht aus wie ein Parameter fehlt, wahrscheinlich parent_rect Ich vermute:
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 ???
);