Heim >Datenbank >MySQL-Tutorial >Warum schlägt mein SQL-Funktionsaufruf mit „Funktion ... existiert nicht' fehl und wie kann ich das Problem beheben?

Warum schlägt mein SQL-Funktionsaufruf mit „Funktion ... existiert nicht' fehl und wie kann ich das Problem beheben?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 13:03:16762Durchsuche

Why Does My SQL Function Call Fail with

"FEHLER: Funktion ... existiert nicht und TIPP: Keine Funktion entspricht dem angegebenen Namen und den angegebenen Argumenttypen"

Im bereitgestellten Code wird ein Versuch unternommen um die Funktion FnUpdateSaletab09 aufzurufen. Es ist jedoch ein Fehler aufgetreten, der darauf hinweist, dass die Funktion nicht existiert oder ihre Argumenttypen nicht mit den erwarteten übereinstimmen.

Die Fehlermeldung deutet darauf hin, dass der Funktionsname oder die Argumenttypen möglicherweise falsch sind. Lassen Sie uns die möglichen Ursachen untersuchen.

Kompatibilität der Argumenttypen

Die Funktionssignatur für FnUpdateSalegtab09 gibt an, dass mehrere seiner Parameter vom Typ smallint sind. Beim Funktionsaufruf werden diese Parameter jedoch als numerische Literale übergeben, von denen zunächst angenommen wird, dass sie vom Typ Ganzzahl sind.

Diese Nichtübereinstimmung zwischen dem erwarteten und dem tatsächlichen Typ der Argumente kann zu dem Fehler führen.

Lösung

Um dieses Problem zu beheben, müssen Sie die numerischen Literale explizit in den richtigen Typ, smallint, umwandeln, bevor Sie sie an die Funktion übergeben. Sie können dies erreichen, indem Sie jedem Literal einen Typumwandlungsoperator (::) hinzufügen, wie unten gezeigt:

select FnUpdateSalegtab09(
  4, 1, 0, 12, 1, '9'::varchar, '2014-07-15'::timestamp, 4048, '9'::varchar, 
  4048, 'MYCUSTOMER'::varchar, 12::money, 0, 0::money, 0.32, 185, 0,
  '2014-07-15 11:24:12 AM'::timestamp, 0, 0::money, 0, 0::money, 0::money, 
  0, 0::money, 0, 0::money, 0, 0::money, ''::varchar, 0::money, False, 
  ''::varchar, '2014-07-15'::timestamp, ''::varchar, ''::varchar, False, 
  ''::varchar, ''::varchar, 1, ''::varchar, 1, 0, 1, 0, 42
);

Durch das Hinzufügen der expliziten Typumwandlungen stellen Sie sicher, dass die Argumenttypen den Erwartungen der Funktion entsprechen Definition, und der Funktionsaufruf sollte jetzt ohne den Fehler „Funktion ... existiert nicht“ ausgeführt werden.

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

Stellungnahme:
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