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

Thema: Problem mit "like" in Funktion

  1. #1
    serverfreak1982 ist offline Benutzer
    Registriert seit
    02.03.2008
    Ort
    Köln
    Beiträge
    37

    Standard Problem mit "like" in Funktion

    Hallo zusammen,

    ich möchte eine Funktion schreiben, habe jedoch ein Problem das ich nicht verstehe.
    Das erstellen der Funktion klappt problemlos aber wenn ich sie ausführe erhalten ich folgenden Fehler:
    Code:
    ERROR:  syntax error at or near "043"
    LINE 17:       "kscArtikel"."ArtNr" LIKE '043%' AND 
                                              ^
    
    ********** Fehler **********
    
    ERROR: syntax error at or near "043"
    SQL Status:42601
    Zeichen:445
    Das hier ist der betreffende Abschnitt:
    Code:
    begin
        SELECT into "quotaLimit"
          "kscArtikel"."Speicherplatz"
        FROM 
          public."kscArtikel", 
          public."kscArtikelBestellt"
        WHERE 
          "kscArtikel"."ArtNr" = "kscArtikelBestellt"."ArtNr" AND
          "kscArtikel"."ArtNr" LIKE '043%' AND 
          "kscArtikelBestellt"."gebuchtBis" IS NULL AND 
          "kscArtikelBestellt"."KdNr" = $2;
    Wo ist das Problem?

    Gruß
    Patrick

  2. #2
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    525

    Standard

    Ist ArtNr eine Spalte vom Typ integer (oder ein anderer numerischer Typ)?
    LIKE kann man nur auf character Datentypen anwenden
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

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

    Standard

    Man könnte den Wert aber durch die Gegend casten ... schneller wird das dadurch aber auch nicht.
    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

  4. #4
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Man könnte den Wert aber durch die Gegend casten ... schneller wird das dadurch aber auch nicht.
    Macht nix. Der KSC spielt eh in der zweiten Liga....

    *duck_und_weg*
    SCNR Uwe
    Have a lot of fun!

  5. #5
    serverfreak1982 ist offline Benutzer
    Registriert seit
    02.03.2008
    Ort
    Köln
    Beiträge
    37

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Ist ArtNr eine Spalte vom Typ integer (oder ein anderer numerischer Typ)?
    ArtNr ist ein character varying

  6. #6
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    525

    Standard

    Zitat Zitat von serverfreak1982 Beitrag anzeigen
    ArtNr ist ein character varying
    Dann vermute ich mal, dass Du uns nicht alles gezeigt hast. Das Statement an sich ist korrekt.
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  7. #7
    serverfreak1982 ist offline Benutzer
    Registriert seit
    02.03.2008
    Ort
    Köln
    Beiträge
    37

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Dann vermute ich mal, dass Du uns nicht alles gezeigt hast. Das Statement an sich ist korrekt.
    Code:
    CREATE OR REPLACE FUNCTION "getFreeQuota"(uid character varying, kdnr character varying)
      RETURNS integer AS
    $BODY$
    
    declare
        "quotaLimit" integer;
        "quotaUsed" integer;
        "quotaFree" integer;
    
    begin
        SELECT into "quotaLimit"
          "kscArtikel"."Speicherplatz"
        FROM 
          public."kscArtikel", 
          public."kscArtikelBestellt"
        WHERE 
          "kscArtikel"."ArtNr" = "kscArtikelBestellt"."ArtNr" AND
          "kscArtikel"."ArtNr" LIKE "043%" AND 
          "kscArtikelBestellt"."gebuchtBis" IS NULL AND 
          "kscArtikelBestellt"."KdNr" = $2;
    
        SELECT into "quotaUsed"
          sum("emlMailboxes".quota)
        FROM 
          public."emlMailboxes", 
          public."emlDomains", 
          public."kscStammdaten"
        WHERE 
          "emlMailboxes"."domainID" = "emlDomains".id AND
          "kscStammdaten".uid = "emlDomains".uid AND
          "emlDomains".uid = $1;
        
        "quotaFree" = "quotaLimit" - "quotaUsed";
        
        return "quotaFree";    
    end;
    
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    ALTER FUNCTION "getFreeQuota"(character varying, character varying) OWNER TO postgres;

  8. #8
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    525

    Standard

    Und schon ist das Problem klar:

    LIKE "043%"

    da müssen Single-Quotes hin (so wie Du das ursprünglich auch gepostet hast), also:

    LIKE '043%'
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

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

    Standard

    In seinem ersten Post standen auch Single Quotes ... darum war das syntaktisch korrekt und wir haben die Fehlermeldung anderweitig gesucht.

    So, und wie rechnen wir diesen Supportfall nun ab?
    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

  10. #10
    serverfreak1982 ist offline Benutzer
    Registriert seit
    02.03.2008
    Ort
    Köln
    Beiträge
    37

    Standard

    Das Anlegen der Funktion mit Single Quotes hatte immer zu einem Fehler geführt.
    Interessanterweise konnte ich sie gerade mit Single Quotes anlegen.

    Abrechnung? Bekommst nen Kuss

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 03.02.2012, 09:58
  2. Problem "Problem running post-install step"
    Von MorkVomOrk im Forum Installation von PostgreSQL
    Antworten: 1
    Letzter Beitrag: 22.02.2011, 16:53
  3. "Problem running post-install step"
    Von Jumo im Forum Installation von PostgreSQL
    Antworten: 4
    Letzter Beitrag: 20.07.2010, 20:50
  4. Funktion ungewollt "mehrfach" aufgerufen
    Von Kai-Behncke im Forum PL/pgSQL
    Antworten: 4
    Letzter Beitrag: 28.04.2009, 07:56
  5. psql "einlogg" problem
    Von Rover im Forum Allgemeines
    Antworten: 4
    Letzter Beitrag: 22.11.2006, 09:38

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