Heim > Datenbank > MySQL-Tutorial > PostgreSQL-Funktionsaufruffehler: Wie behebt man „Funktion ... existiert nicht' aufgrund einer Typinkongruenz?

PostgreSQL-Funktionsaufruffehler: Wie behebt man „Funktion ... existiert nicht' aufgrund einer Typinkongruenz?

DDD
Freigeben: 2025-01-04 07:19:34
Original
431 Leute haben es durchsucht

PostgreSQL Function Invocation Error: How to Fix

FEHLER: Funktionsaufruf-Konflikt und Argumenttypumwandlung

In Ihrem Code stoßen Sie auf den Fehler: „FEHLER: Funktion ... funktioniert nicht.“ nicht vorhanden und HINWEIS: Keine Funktion entspricht dem angegebenen Namen und den angegebenen Argumenttypen. Dieser Fehler entsteht durch eine Diskrepanz zwischen der Funktionsdefinition und den beim Aufruf übergebenen Argumenten.

Insbesondere hat Ihre Funktion, FnUpdateSalegtab09, mehrere Parameter, die als „smallint“-Datentyp deklariert sind. Wenn Sie die Funktion jedoch aufrufen, übergeben Sie numerische Literale (z. B. „12“) als Argumente für diese Parameter.

Typumwandlungsproblem

PostgreSQL geht von numerischen Literalen aus standardmäßig ohne Dezimalpunkte oder Exponenten als Typ „Ganzzahl“. Die Parameter in Ihrer Funktion sind jedoch als „smallint“ definiert, was einem Bereich von -32768 bis 32767 entspricht. Die Übergabe eines ganzzahligen Werts ohne explizite Umwandlung über diesen Bereich hinaus kann zu Datenkürzungen oder Fehlern führen.

Lösung

Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:

1. Explizite Typumwandlung im Funktionsaufruf:

Sie können die numerischen Literale im Funktionsaufruf mithilfe der Syntax „::smallint“ explizit in „smallint“ umwandeln. Zum Beispiel:

select FnUpdateSalegtab09 (4, 1, 0, 12, 1::smallint, '9'::varchar,....
Nach dem Login kopieren

2. Untypisierte Literale übergeben:

Alternativ können Sie untypisierte String-Literale im Funktionsaufruf verwenden. PostgreSQL leitet dann anhand der Funktionsparameter den richtigen Datentyp ab. Schließen Sie dazu das numerische Literal in einfache Anführungszeichen ein:

select FnUpdateSalegtab09 (4, 1, 0, 12, '1':: smallint,....
Nach dem Login kopieren

Beispiel

Betrachten Sie den folgenden korrigierten Funktionsaufruf:

select FnUpdateSalegtab09 (4, 1, 0, 12::smallint, 1, '9'::varchar,....
Nach dem Login kopieren

Dieser Aufruf wandelt das ganzzahlige Literal „12“ explizit in „smallint“ um und stellt so sicher, dass die Funktionsparameter mit den erwarteten Daten übereinstimmen Typen.

Das obige ist der detaillierte Inhalt vonPostgreSQL-Funktionsaufruffehler: Wie behebt man „Funktion ... existiert nicht' aufgrund einer Typinkongruenz?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage