Zum Inhalt springen

IF-THEN-ELSE Problem


Ganymed

Empfohlene Beiträge

Hallo!

Ich bin ein absoluter Newbie in PL/SQL und hänge schon bei jeder Kleningkeit fest.

Ist bestimmt alles für euch ein Klacks (hoffe ich) :)

Also:

Ich habe folgende PL/SQL Anweisung:

IF Vorname<>"" AND Nachname<>"" THEN

SELECT ID

INTO numPersonID

FROM adr_person

WHERE FirstName=Vorname AND LastName=Nachname;

ELSIF Vorname ="" THEN

SELECT ID

INTO numPersonID

FROM adr_person

WHERE LastName=Nachname;

ELSIF Nachname = "" THEN

SELECT ID

INTO numPersonID

FROM adr_person

WHERE FirstName=Vorname;

END IF;

In der Fett markierten Zeile hält der Compiler an und sagt, dass mein Befehl nicht korrekt beendet wurde... Fehlt da irgendwo ein Semikolon??? Laut meinem Buch hier neben mir stimmt das irgendwie... Oder ich steh auf dem Schlauch...

Ausserdem bekomme ich folgende Fehlermeldung:

ORA-00604: error occured ar recursive SQL Level 1

ORA-01400: cannot insert NULL into ("SYS". "OBJ$", "Name")

Was will der von mir??? Ich will doch nichts Inserten...

:confused: :confused: :confused:

Und da ich gerad dabei bin (:D): Wie frage ich nach einem Leeren Feld in Oracle ab???

Also ich hab mal einen Vornamen gesichert und mal keinen.

(Daher auch dieses IF-Konstrukt).

Mit einem einfachen Where FirstName="" oder einem FirstName=NULL geht es nicht.

Die IF Anweisung bekommt aus einem Programm den Namen geliefert (also auch "leere" Namen)... Wieso reicht das Erste Statement

SELECT ID

INTO numPersonID

FROM adr_person

WHERE FirstName=Vorname AND LastName=Nachname;

nicht?

Wenn ich z.B. keinen Vornamen habe und diese Abfrage ausführe, bekomme ich kein Ergebnis...

Fragen über Fragen, die mich alle verwirren, da es damals unter Access ging... :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey super, danke!

Das mit dem IS NULL versuche ich direkt mal!

Das mit dem ELSE-Abbruch habe ich jetzt vor 2min herausgefunden:

*An den Kopf schlag*

Man darf keine " setzen, sondern man muss ' setzen... :rolleyes:

Hab ich aber auch nur durch ausprobieren gefunden...

Nachtrag: Das mit mit IS NULL funktioniert! Super!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Ganymed

  IF Vorname<>"" AND Nachname<>"" THEN 

     SELECT ID 

     INTO numPersonID

     FROM adr_person

     WHERE FirstName=Vorname AND LastName=Nachname;

  [B]ELSIF Vorname ="" THEN[/b]

     SELECT ID 

     INTO numPersonID

     FROM adr_person

     WHERE LastName=Nachname;

  ELSIF Nachname = "" THEN

     SELECT ID 

     INTO numPersonID

     FROM adr_person

     WHERE FirstName=Vorname;

  END IF; 

  

ORA-00604: error occured ar recursive SQL Level 1

ORA-01400: cannot insert NULL into ("SYS". "OBJ$", "Name")

Was will der von mir??? Ich will doch nichts Inserten...

:confused: :confused: :confused:

Also,

erstmal würde ich anstatt der "" '' nehmen (single Quotes). Außerdem fragst du nach leer oder nach null ab ?? wenn du nach Null fragst, benutze "is null"

edit: Ich liebe Probleme, die sich von selbst lösen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...