Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Problem mit pl/pgsql Debugger

  1. #1
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard Problem mit pl/pgsql Debugger

    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.

    Ich hoff jemand kann mir dabei helfen.

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von tme2525 Beitrag anzeigen
    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???
    Du rufst die Funktion irgendwo mit 4 Parametern auf, sie erwartet aber nur einen Parameter.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    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.

  4. #4
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Was passiert, wenn du:

    Code:
    SELECT*FROM tiger.geocode('2 Alder Creek Road Beaverhead MT 59762'::VARCHAR)
    aufrufst?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  5. #5
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    Dann bringt er mir das Resultat der Geokodierung:

    ADDY = "(2,,"Alder Creek",Rd,,,Anaconda,MT,59762,t)"
    GEOMOUT = "0101000020AD100000DCDC989EB0415CC032E202D028E9464 0"
    RATING = '0'

    Wie es sein sollte.

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    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.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  7. #7
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    Die Funktion funktioniert auch ohne ::VARCHAR

    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.

  8. #8
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Hmmm, ok falsch verstanden.

    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?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  9. #9
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    Hab schon alles versucht.
    - Mit Anführungszeichen ' '
    - Ohne Anfürungszeichen
    - Mit ::VARCHAR am Ende des Strings (mit/ohne Anführungszeichen)

    Kann es sein, dass der Debugger probleme mit Geometrietypen hat?

  10. #10
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    Da ist ja an sich kein Geometrietyp im Spiel, weil der einzige IN-Parameter ist ein VARCHAR.

    Der Debugger ist von EnterpriseDB, oder?
    Kipp doch dort mal einen Bugreport ein oder such, ob die etwas entsprechendes in der FAQ stehen haben.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum