Seit längerem hab ich ein Problem mit dem pgAdmin Debugger. Bei gewissen Funktionen ist er ohne weiteres anwendbar, bei anderen kommt stets die selbe Fehlermeldung mit der ich leider nichts anfangen kann.
Die Funktionen die ich verwende sind nicht selbst geschrieben (Tiger/Line Geocoder Funktionen).
Fehlermeldung:
An error has occurred:
FEHLER: Funktion tiger.geocode(character vaying, norm_addy, geometry, integer) existiert nicht
LINE 1: SELECT*FROM tiger.geocode(‘2 Alder Creek Road Beaverhead MT 59762’)
HINT: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
Ich versteh leider nicht weshalb die Funktion nicht exsistieren sollte???
Hier die ersten Zeilen des Codes:
CREATE OR REPLACE FUNCTION tiger.geocode(IN “input” character varying, OUT addy norm_addy, OUT geomout geometry, OUT rating integer)
RETURNS SETOF record AS
$BODY$
DECLARE
rec RECORD;
BEGIN
IF input IS NULL THEN
RETURN;
END IF;
– Pass the input string into the address normalizer
ADDY := normalize_address(input);
IF NOT ADDY.parsed THEN
RETURN;
END IF;
usw…
Das komische ist, dass die Funktion normalize_address(input) die verwendet wird, mit dem Debugger ohne Probleme funktioniert.
Die Funktion die aufgerufen wird ist: geocode(character varving)
Für character varying wird ein Addressstring eingegeben.
In der Funktion:
tiger.geocoder(IN “input” character varying, OUT addy norm_addy, OUT geomout geometry, OUT rating integer)
Das sollte ja soweit übereinstimmen.
Die Funktionen können auch ausgeführt werden. Adressen werden richtig geokodiert.
Es funktioniert soweit alles, ausser dass die Funktion nicht mit dem Debugger aufgerufen werden kann.
Dein Text in ‘…’ wird als TEXT und nicht als VARCHAR erkannt.
Du könntest deine Funktion immer mit ::VARCHAR aufrufen, dir einen entsprechenden Wrapper von TEXT nach VARCHAR schreiben oder einen entsprechenden CAST hinzufügen.
SELECT*FROM tiger.geocode(‘2 Alder Creek Road Beaverhead MT 59762’)
–> Das selbe Resultat
Was jedoch nicht funktioniert, ist wenn ich (mit Rechtsklick auf die Funktion) den Debugger aufrufe und dort als Value für den Type character varying ‘2 Alder Creek Road Beaverhead MT 59762’ eingebe. Dabei kommt jedesmal eine Fehlermeldung.
Gibst du das mit oder ohne einfache Anführungszeichen an?
Hmm, die anderen 3 Parameter sind aber OUT Parameter - macht der Debugger da irgendetwas falsch?