PL/SQL: Fehler "PLS-00306: falsche Anzahl oder Typen der Argumente im Aufruf" ausgelöst, für die Tabelle von zahlen
Ich versuche zu rufen, eine API mit der genauen Prozedur-Signatur, aber irgendwie ist die Tabelle von zahlen, die ich nicht glaube, ist richtig erkannt.
API-definition:
TYPE NUMLIST IS TABLE OF NUMBER INDEX BY VARCHAR2(50);
PROCEDURE GETSERVICES_API
(
I_DIMOBJID IN NUMBER, I_OBJECTID IN NUMBER, I_FILTER IN NUMBER,
O_ERRORCODE OUT NUMBER, O_ERRORTEXT OUT VARCHAR2, O_SERVICELIST OUT NUMLIST
);
Mein Aufruf-API:
DECLARE
TYPE NUMLIST IS TABLE OF NUMBER INDEX BY VARCHAR2(50);
lt_SERVICELIST NUMLIST;
ls_errortext varchar2(100);
ln_errorcode number;
BEGIN
PKGCOMSUPPORT_SERVICE.GETSERVICES_API(I_DIMOBJID => 6,
I_OBJECTID => 5263,
I_FILTER => 3,
O_ERRORCODE => ln_errorcode,
O_ERRORTEXT => ls_errortext,
O_SERVICELIST => lt_SERVICELIST);
END;
Wenn ich mein call of API bekam ich: PLS-00306: falsche Anzahl von Typen der Argumente in Aufruf von " GETSERVICE_API
Irgendeine Idee warum? Dank
- haben Sie versuchen, Ihre NUMLIST Typ-Deklaration außerhalb Ihrer pl/sql-block?
- Nein, ich habe nicht versucht, sollte aber die gleiche Sache.
- Ich glaube nicht, dass Sie erstellen können, - Typen in pl/sql-block, Sie sind Datenbank-Objekte
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, warum Sie mit Blick auf den
PLS-00306
Fehler ist Inkompatibilität vonNUMLIST
collection-Typ, wie Sie in der package-Spezifikation undNUMLIST
collection-Typ definiert in der anonymen PL/SQL block. Auch wenn die Definitionen dieser beiden Sammlungen sind die gleichen, Sie sind nicht kompatibel. In Ihrem anonymen PL/SQL block, den Sie zu erklären und dann pass in dieGETSERVICES_API
Prozedur eine variablePKGCOMSUPPORT_SERVICE.NUMLIST
Daten geben.Ich denke, dass die Typ-definition ungültig ist. Zum erstellen einer Tabelle 'Typ' brauchen Sie etwas wie das folgende:
vielleicht können Sie versuchen, diese:
Hatte ich auch die PLS-00306 Fehler, aber die Ursache war eine andere. In meinem Fall wurde ich mit falschen Namen argument. Ich habe Verfahren:
FUNCTION get_card_list(p_clob_in IN CLOB, o_clob_out OUT CLOB)
Die Argumente, die Namen sind p_clob_in und o_clob_out, so sollte ich mich nennen diesen Vorgang durch:
get_card_list(p_clob_in=>inner, o_clob_out=>outer)
oder
get_card_list(inner, outer)
, aber ich war mit falschen argument-Namen: p_xml & o_xml:get_card_list(p_xml=>inner, o_xml=>outer)
Diesem YT-video, das hilft mir viel: https://www.youtube.com/watch?v=xwMVL3Z_vn8