Keine Funktion entspricht dem angegebenen Namen und den angegebenen Argumenttypen

10

Meine Funktion ist:

%Vor%

Und ich habe das so genannt:

%Vor%

Der Fehler ist:

%Vor%
    
quelle

3 Antworten

12

Ihre Funktion hat einige smallint Parameter.
In dem Aufruf verwenden Sie numerische Literale, die vermutlich vom Typ integer sind.

Ein String-Literal oder String-Konstante ( '123' ) wird nicht sofort eingegeben. Es bleibt Typ "unbekannt" bis zugewiesen oder explizit gegossen.

Jedoch ein numerisches Literal oder numerische Konstante wird sofort eingegeben. Pro Dokumentation:

  

Eine numerische Konstante, die weder einen Dezimalpunkt noch einen enthält   Der Exponent wird zunächst als <%> angenommen, wenn der Wert integer ist   passt in den Typ integer (32 Bits); ansonsten wird angenommen, dass es sich um einen Typ handelt    bigint , wenn sein Wert in den Typ bigint (64 Bits) passt; sonst ist es so   genommen als Typ numeric . Konstanten, die Dezimalpunkte und / oder enthalten   Exponenten werden immer zuerst als Typ numeric angenommen.

Weitere Erklärungen und Links in dieser verwandten Antwort:

Lösung

Fügen Sie explizite Umwandlungen für die smallint -Parameter hinzu oder zitieren Sie sie.

Demo

%Vor%

Falscher Aufruf:

%Vor%

Korrekte Anrufe:

%Vor%

SQL Fiddle.

    
Erwin Brandstetter 16.07.2014, 02:09
quelle
1

Dieser Fehler bedeutet, dass ein Funktionsaufruf nur von einer vorhandenen Funktion abgeglichen wird, wenn alle Argumente vom selben Typ sind und in der gleichen Reihenfolge übergeben werden. Also, wenn die nächste f() -Funktion

%Vor%

wird als

bezeichnet %Vor%

Es wird mit

auskommen %Vor%

weil es keine Funktion f() gibt, die eine Ganzzahl als Argument verwendet.

Sie müssen also sorgfältig vergleichen, was Sie an die Funktion übergeben, was erwartet wird. Diese lange Liste von Tabellenspalten sieht wie ein schlechtes Design aus.

    
Clodoaldo Neto 15.07.2014 08:49
quelle
0

In meinem speziellen Fall fehlte die Funktion tatsächlich. Die Fehlermeldung ist die gleiche. Ich benutze das Postgresql-Plugin PostGIS und ich musste das aus irgendeinem Grund neu installieren.

    
n1000 08.10.2015 09:20
quelle