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

Thema: Exception bei PostgreSQL

  1. #1
    Lara ist offline Benutzer
    Registriert seit
    10.11.2010
    Beiträge
    40

    Standard Exception bei PostgreSQL

    Hallo,

    verstehe ich es richtig, dass es nicht möglich ist Exceptions im DECLARE-Bloch zu bestimmen und somit mehrfach auf einzelne Exceptions zugreifen zu können? Wie zB bei Oracle:

    Code:
    CREATE OR REPLACE FUNCTION  "CHECK" 
    ()
    return INTEGER
    as
    PRAGMA AUTONOMOUS_TRANSACTION;
      num INTEGER;
      exception1 EXCEPTION;
      exception2 EXCEPTION;
    begin
      IF --TEST-- THEN
         RAISE exception1;
      END IF;
    
      IF --TEST-- THEN
         RAISE exception1;
      END IF;
    
      IF --TEST-- THEN
         RAISE exception2;
      END IF;
    
      IF --TEST-- THEN
         RAISE exception2;
      END IF;
    
      RETURN num;
    
    EXCEPTION
      WHEN exception1 THEN
          raise_application_error (-20012,'Error: ' || 'GLN already in use' || ' - ' || SQLERRM);
      WHEN exception2 THEN
          raise_application_error (-20012,'Error: ' || 'Invalid GLN' || ' - ' || SQLERRM);
      WHEN OTHERS THEN
          raise_application_error(-20001, 'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
    end;

  2. #2
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    Was Du meinst sind custom-exceptions .. mit postgres kann man keine solchen deklarieren. Du kannst aber wie in pl/sql auch Exceptions auslösen. Such Dir einfach eine passende vordefinierte Exception aus:

    PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: Porting from Oracle PL/SQL
    PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: PostgreSQL Error Codes

  3. #3
    Lara ist offline Benutzer
    Registriert seit
    10.11.2010
    Beiträge
    40

    Standard

    Ich habe hier ein Thema zu meinem Problem gefunden:
    Exceptions und Errors [Archive] - Informatik-Forum.at

    Dort heißt es:
    SQLERRM/add

    EXCEPTION WHEN OTHERS THEN
    RAISE EXCEPTION '%', SQLERRM USING ERRCODE = SQLSTATE;
    RETURN -1;
    END
    Was ist SQLERRM für ein Datentyp? Und warum kommt bei mir ein Fehler wenn ich das mache:

    Code:
    DECLARE 
      SQLERRM      NUMERIC;  --TEXT hat ich auch ausprobiert
    BEGIN
      SELECT * From tab
      If not FOUND then
        RAISE EXCEPTION 'An error  - % ', SQLERRM USING ERRCODE = SQLSTATE;
      end if;
    END;

    FEHLER: Spalte »sqlstate« existiert nicht
    LINE 1: SELECT SQLSTATE

    Wie und als was kann ich
    SQLSTATE deklarieren?

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

  5. #5
    Lara ist offline Benutzer
    Registriert seit
    10.11.2010
    Beiträge
    40

    Standard

    Dieser Link hilft mir nicht! Ich weiß, dass SQLSTATEschon vordefiniert ist, aber meine Datenbanksystem scheint es nicht zu wiesen. Wie kann ich das Problem lösen?

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

    Standard

    In der Dokumentation zu pl/pgSQL sind auch einige Beispiele, wie du RAISE EXCEPTION verwendest.
    Bist du diesen Beispielen mal gefolgt?
    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
    Lara ist offline Benutzer
    Registriert seit
    10.11.2010
    Beiträge
    40

    Standard

    Also entweder habe ich sie übersehen/nicht gefunden oder sie haben mir auch nicht geholten. Wenn du möchtest kannst du mir gern einen Link schicken.

  8. #8
    Lara ist offline Benutzer
    Registriert seit
    10.11.2010
    Beiträge
    40

    Standard

    Will mir denn nimand Helfen?

    Ich habe u.a. diesen Link gefunden:
    Fehlerbehandlung
    Wie aber kann ich diese Fehlerabfragen machen? Damit z.B. kann er nichts anfangen:
    Code:
    if sqlca.sqlcode = 100 THEN
       -- Anweisungen
    END IF;
    FEHLER: fehlender Eintrag in FROM-Klausel für Tabelle »sqlca« LINE 1: SELECT sqlca.sqlcode = 100

    Wie also macht man es richtig. Kann mir jemand ein Beispiel schreiben?

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

  10. #10
    Lara ist offline Benutzer
    Registriert seit
    10.11.2010
    Beiträge
    40

    Standard

    Ja danke, das ist genau das, was ich gesucht habe.

    Gibt es eine Fehlermeldung, wenn eine Select keine Daten gefunden hat? Auf "no_data_found" reagiert er nicht.
    Geändert von Lara (06.04.2011 um 09:09 Uhr)

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Problem: EXCEPTION Handling für fehlgeschlagene decode-Funktion
    Von tvhwgt im Forum Trigger und Funktionen
    Antworten: 2
    Letzter Beitrag: 08.12.2011, 21:27
  2. Frage zu EXCEPTION-Bsp. in PG-Doc.
    Von Giftpilz im Forum PL/pgSQL
    Antworten: 2
    Letzter Beitrag: 10.07.2008, 13:38
  3. Java Postgres Exception Hibernate
    Von terencejackson im Forum Programmierung
    Antworten: 1
    Letzter Beitrag: 05.06.2007, 15:25
  4. C# Odbc Exception
    Von mattulla im Forum Programmierung
    Antworten: 4
    Letzter Beitrag: 07.05.2007, 22:16
  5. Delete in Triggerfunktion, danach ein RAISE EXCEPTION
    Von SPYder im Forum Trigger und Funktionen
    Antworten: 10
    Letzter Beitrag: 21.12.2006, 14:13

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