Ergebnis 1 bis 3 von 3

Thema: Weder IF ... THEN noch ELSE-Teil werden durchlaufen

  1. #1
    achilles_69 ist offline Benutzer
    Registriert seit
    05.07.2006
    Ort
    Bielefeld
    Beiträge
    42

    Standard Weder IF ... THEN noch ELSE-Teil werden durchlaufen

    Hallo,

    entweder habe ich ein riesen Brett vor dem Kopf oder irgendetwas ist hier komisch. Ich habe in einer plpgsql-Funktion folgende IF-Verzweigung:

    Code:
            SELECT  INTO cur_ansprechpartner_letzter_kontakt
                    id          AS id
            FROM    letzter_kontakt
            WHERE   ansprechpartner = id_ansprech;
    
            IF FOUND THEN
    
                RAISE NOTICE ''Eintrag gefunden!'';
    
                result := cur_ansprechpartner_letzter_kontakt.id
    
            ELSE
    
                RAISE NOTICE ''Kein Eintrag gefunden!'';
    
                SELECT      INTO cur_letzter_kontakt
                            id      AS id
                FROM        kontakte
                WHERE       ansprechpartner = id_ansprech
                ORDER BY    kontaktam DESC,
                            kontaktum DESC
                LIMIT 1;
    
                INSERT  INTO letzter_kontakt (
                        ansprechpartner, kontakt
                )
                VALUES (
                        id_ansprech, cur_letzter_kontakt.id
                );
    
                result := curval(''letzter_kontakt_id_seq'');
            END IF;
    
            RAISE NOTICE ''Hallo Welt!'';
    Wenn ich die Funktion in pgsql aufrufe, sollte sie doch entweder die Meldung 'Eintrag gefunden' oder 'Eintrag nicht gefunden' ausgeben, oder?
    Tut sie aber nicht - weder der IF..THEN- noch der ELSE-Teil werden durchlaufen. Das letzte 'Hallo Welt!' wird aber ausgegeben.

    Aber sofern kein Laufzeitfehler auftritt, sollte doch zumindest der ELSE-Teil durchlaufen werden, oder?
    Ich habe auch schon mal probiert, den IF..THEN und den ELSE-Teil auszutauschen und auf 'NOT FOUND' zu testen, ohne Erfolg.

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

    Standard

    Zitat Zitat von achilles_69 Beitrag anzeigen

    Aber sofern kein Laufzeitfehler auftritt, sollte doch zumindest der ELSE-Teil durchlaufen werden, oder?
    Ich habe auch schon mal probiert, den IF..THEN und den ELSE-Teil auszutauschen und auf 'NOT FOUND' zu testen, ohne Erfolg.
    Ja. Klappt es, wenn Du im if-Teil das fehlende ';' noch einfügst?

    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
    achilles_69 ist offline Benutzer
    Registriert seit
    05.07.2006
    Ort
    Bielefeld
    Beiträge
    42

    Standard

    Jau, super jetzt scheint es zu klappen! Manchmal bin ich so zugenagelt, dass ich die einfachsten Dinge nicht sieht. Vielleicht hätte ich meinen Kopf auch von Pascal- auf plpgsql-Syntaxprüfung umschalten sollen...

Ähnliche Themen

  1. RECORD durchlaufen
    Von Sergius im Forum Trigger und Funktionen
    Antworten: 10
    Letzter Beitrag: 15.09.2011, 23:16
  2. Antworten: 3
    Letzter Beitrag: 24.08.2011, 16:39
  3. Antworten: 0
    Letzter Beitrag: 10.01.2011, 10:26
  4. Antworten: 3
    Letzter Beitrag: 27.09.2009, 21:20
  5. Über Funktion Teil eines Select-Befehls übergeben
    Von Kai-Behncke im Forum PL/pgSQL
    Antworten: 2
    Letzter Beitrag: 11.07.2009, 16:01

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