# Ein If und ein SELECT in Oracle?



## EOB (20. Sep 2007)

hi, wie kann ich das machen? ich habe es jetzt so:

_
IF (SELECT accountowner FROM table where id = 123) = '6gfg66' THEN
	--tue was
END IF;
_

geht aber nicht ... wie muss ich das machen? das id ist sicher falsch?

danke


----------



## y0dA (21. Sep 2007)

?
Also entweder schreibst du eine Prozedur oder du teilst den Schmarrn da oben auf (in Java und SQL).

Also warum nicht folgendes machen:
1. gewünschte Daten aus der DB laden:

```
SELECT accountOwner
  FROM table
  WHERE id = 123
```

2. Java Code
Iterierst du dann über das ResultSet der SQL Abfrage und überprüfst dann weiter mit IF.

Obwohl ich sagen muss dass ich nicht wirklich dein Konstrukt da oben verstehe. Denn wenn die table ein Feld mit dem Inhalt *'6gfg66' * besitzt, kannst du das auch schon im SQL rausfiltern:

```
SELECT accountOwner
  FROM table
  WHERE id = 123 AND columnX = '6gfg66'
```


----------



## abollm (22. Sep 2007)

EOB hat gesagt.:
			
		

> hi, wie kann ich das machen? ich habe es jetzt so:
> 
> _
> IF (SELECT accountowner FROM table where id = 123) = '6gfg66' THEN
> ...



Wenn du mit einem Oracle-RDBMS arbeitest, solltetst du dich vorher ein wenig mit den grundsätzlichen Möglicheiten des gesamten Systems auseinandersetzen. Du hast zur Lösung der o.e. Aufgabe verschiedene Möglicekiten. Eine ziemlich einfache Lösung besteht darin, eine so genannte gespeicherte Prozedur (aka Stored procedure) zu schreiben. Dazu musst du die in der DB-Engine implementierte 3GL-Sprache PL/SQL anwenden. Damit hast du eine Flexibilität, mit der du die oben gestellte Aufgabe recht einfach lösen kannst.

Eine andere Variante besteht darin, innerhalb von SQL-Abfragen so genannte SQL-Funktionen zu verwenden. Es gibt davon einige, so auch welche, mit denen du Bedingungen auswerten kannst, wie beispielsweise die "decode"-Funktion.

Die letzte Möglichkeit besteht darin, mit Hilfe gewöhnlicher Programmiersprachen (Wirtssprache, wie Java, C, Basic etc.) die benötigten SQL-Routinen einzubetten. Diese Möglichkeit ist in der Regel die langsamste, insbesondere dann, wenn sehr viele Transaktionen ausgeführt werden müssen.


----------

