Heim > Datenbank > MySQL-Tutorial > Warum schlägt mein SQL-Funktionsaufruf mit der Fehlermeldung „Funktion existiert nicht' fehl?

Warum schlägt mein SQL-Funktionsaufruf mit der Fehlermeldung „Funktion existiert nicht' fehl?

Mary-Kate Olsen
Freigeben: 2024-12-27 09:33:11
Original
264 Leute haben es durchsucht

Why Does My SQL Function Call Fail with

FEHLER: Funktion existiert nicht und keine passende Funktion gefunden

Beachten Sie die folgende Fehlermeldung:

ERROR:  function fnupdatesalegtab09(integer, integer, integer, integer, integer, unknown, unknown, integer, unknown, integer, unknown, integer, integer, integer, numeric, integer, integer, unknown, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, unknown, integer, boolean, unknown, unknown, unknown, unknown, boolean, unknown, unknown, integer, unknown, integer, integer, integer, integer, integer) does not exist  
LINE 1: select FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9','2014-07-15',...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.  
Nach dem Login kopieren

In diesem Szenario ein Versuch wurde erstellt, um eine Funktion namens FnUpdateSaletab09 mit bestimmten Parametern aufzurufen. Der Fehler weist jedoch darauf hin, dass die Funktion nicht vorhanden ist. Darüber hinaus deutet der Fehler darauf hin, dass es keine Funktion gibt, die mit dem angegebenen Namen und den angegebenen Argumenttypen übereinstimmt.

Ursache

Der Fehler ist wahrscheinlich auf ein Umwandlungsproblem zurückzuführen. Beim Funktionsaufruf werden numerische Literale für Parameter verwendet, die in der Funktionsdefinition als smallint definiert sind. Bei numerischen Literalen wird zunächst davon ausgegangen, dass sie vom Typ Integer sind, wenn ihr Wert in den Typ Integer passt. Da keine explizite Typumwandlung bereitgestellt wird, kann dies zu einer Diskrepanz zwischen den erwarteten und tatsächlichen Argumenttypen führen.

Lösung

Um dieses Problem zu beheben, fügen Sie den numerischen Literalen in explizite Typumwandlungen hinzu Der Funktionsaufruf muss dem erwarteten Smallint-Datentyp entsprechen. Alternativ können Sie im Funktionsaufruf zitierte (untypisierte) Literale verwenden.

Beispiel

Falscher Aufruf:

SELECT * FROM f_typetest(1);
Nach dem Login kopieren

Richtig Aufrufe:

SELECT * FROM f_typetest('1');
SELECT * FROM f_typetest(smallint '1');
SELECT * FROM f_typetest(1::int2);
SELECT * FROM f_typetest('1'::int2);
Nach dem Login kopieren

Durch diese Anpassungen wird der Funktionsaufruf ausgeführt sollte nun ohne Fehler erkannt und ausgeführt werden.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein SQL-Funktionsaufruf mit der Fehlermeldung „Funktion existiert nicht' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage