Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Abfrageergebnisse

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

    Standard

    Ich hab versucht die Funktion im Debugger durchlaufen zu lassen. Dabei kam der Fehler.
    Hier ist die komplette Funktion:

    CREATE OR REPLACE FUNCTION tm_match2("input" character varying, out x character varying)
    RETURNS SETOF record AS
    $BODY$
    DECLARE

    NORM norm;
    rec RECORD;

    BEGIN

    -- Normalisierung
    NORM := tm_normalize(input);


    -- Free Text Search

    FOR rec IN SELECT street FROM address WHERE street = norm.strasse LOOP

    RETURN NEXT;

    END LOOP;

    RETURN;

    END
    $BODY$
    LANGUAGE 'plpgsql' VOLATILE
    COST 100;
    ALTER FUNCTION tm_match2(character varying) OWNER TO postgres;

  2. #12
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von tme2525 Beitrag anzeigen
    Ich hab versucht die Funktion im Debugger durchlaufen zu lassen. Dabei kam der Fehler.
    Hier ist die komplette Funktion:

    CREATE OR REPLACE FUNCTION tm_match2("input" character varying, out x character varying)
    RETURNS SETOF record AS
    $BODY$
    $BODY$
    LANGUAGE 'plpgsql' VOLATILE
    COST 100;
    ALTER FUNCTION tm_match2(character varying) OWNER TO postgres;
    Seufz. Wie rufst Du das auf?

    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. #13
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    Aufruf via:
    SELECT DISTINCT * FROM tm_match2('Inputstring') AS (street VARCHAR);

    Das funktioniert wunderbar.

    Doch wenn ich versuche die selbe Funktion (tm_match2) im Debugger von EnterpriseDB durchlaufen zu lassen,
    kommt bei 'RETURN NEXT rec' die erwähnte Fehlermeldung.
    Das versteh ich nicht ganz.

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

    Standard

    Zitat Zitat von tme2525 Beitrag anzeigen
    RETURN NEXT;
    Was genau soll denn hier zurückgeliefert werden?
    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. #15
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    Sorry mein Fehler.

    Der Befehl lautet 'RETURN NEXT rec;'

    Das Problem ist folgendermassen:
    Wenn via Aufruf
    SELECT DISTINCT * FROM tm_match2('Inputstring') AS (street VARCHAR);
    die Funktion tm_match2 aufgerufen wird, erhalt ich die gewünschten Resultate.

    Wenn ich jedoch via Debugger step by step versuche die Funktion durchzuführen, kommt beim Befehl 'RETURN NEXT rec' die beschriebene Fehlermeldung.

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

    Standard

    Ist beim Debugger-Aufruf auch das "AS (...)" dabei?
    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. #17
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    Ja.

    Der aktuelle Befehl in der Funktion lautet:

    PERFORM set_limit(sim_minimum_street);
    FOR rec IN SELECT street, similarity(norm.strasse, street) AS sim
    FROM address WHERE street % norm.strasse
    ORDER BY sim DESC
    LIMIT 5
    LOOP
    RETURN NEXT rec;
    END LOOP;
    RETURN;

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

    Standard

    Das Problem ist, dass ich schon länger Schwierigkeiten mit dem DBEnterprise Debugger habe (Siehe Problem mit Pl/pgSQL Debugger).

    Aber ich hätte sonst noch eine weitere völlig andere Frage, bei der ihr mir weiterhelfen könntet.
    Und zwar will ich für meine Adresstabelle für jede Spalte einen GIN und einen GIST-Index kreieren. Um die Performace für unterschiedliche Abfragen zu testen.

    CREATE INDEX address_city_gin
    ON address
    USING gin
    (city gin_trgm_ops);

    Die Frage ist bezüglich den Operatorklassen gin_trgm_ops. Was genau bewirkt die?
    Und gibt es noch andere mögliche Operatorenklassen?
    Hab leider nichts gefunden in der Doku.

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Nummerierung der Abfrageergebnisse
    Von waldi im Forum SQL
    Antworten: 9
    Letzter Beitrag: 06.07.2007, 08:13
  2. Antworten: 4
    Letzter Beitrag: 28.01.2007, 18:50

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