Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

IF-THEN-ELSE Problem

Empfohlene Antworten

Veröffentlicht

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:

Hi,

das sind ja erstmal eine Menge Fragen :)

So spontan kann ich dir nur das beantworten :

Wie frage ich nach einem Leeren Feld in Oracle ab

Null fragt man ab

feldname is null

Beim Rest bin ich auch erstmal ratlos aber ich denke mal weiter drüber nach

Gruß

  • Autor

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!

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 ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.