PL/SQL-Aufruf eine Funktion, die außerhalb eines Pakets
Ich eine Funktion definieren, die außerhalb eines Pakets, versucht, Sie zum aufrufen dieser Funktion ist fehlgeschlagen.
wie es zu lösen ist ? Dank
create or replace
package body test_erp AS
procedure init_data is
begin
logMessage('procedure init_data');
end init_data;
end test_erp;
/
show error
Fehler ist
PLS-00221: 'LOGMESSAGE' is not a procedure or is undefined
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als der Fehler deutet
logmessage
ist nicht ein Verfahren. Es ist eine Funktion. Als Funktionen zurückgeben, etwas, das Sie brauchen, um diese zuordnen zu einer Variablen. Sie wissen, dasslogmessage
gibt eine Zahl zurück, so dass Sie brauchen, um eine variable zu deklarieren, um diesen Rückgabewert an.Aber es sieht aus wie
logmessage
sollte in der Tat eine Prozedur sein. Ich nehme an, du bist Ausführung von DML-Anweisungen (update/insert) in diesem. Ein Funktionsaufruf verwendet werdenselect
Anweisung, wenn dies der Fall ist, was bedeutet, dass es gibt immer die Möglichkeit eines Fehlers Auftritt. Wennlogmessage
wurden, eine Prozedur, die Sie deklarieren können, eineaus
parameter sagen die aufrufende Prozedur, ob alles funktionierte oder nicht; so etwas wie die folgenden:Können Sie dann rufen Sie es wie folgt:
Wenn
logmessage
ist, nicht dazu verwendet werden, die außerhalb des Paketstest_erp
ich würde es im inneren der Verpackung; es hält die namespace-Reiniger und vermeidet es immer fälschlicherweise benutzt werden, ein anderes Paket /Anruf etc.Unter der Annahme, dass
logMessage
ist die gleiche Funktion von diese post:Seit
logMessage
ist eine Funktion (und gibt eine Zahl zurück), müssen Sie es so nennen: