# Wie mache ich in SQL eine "Richtige IF-Anweisung", seht euch mein Beispiel an



## unfaehig (3. Februar 2011)

Ich will eine IF-Anweisung wie in Java/C++ durchführen. Ich benutze eine MSSQL, Das MSSQL Server Management Studio, dort will ich über einen Trigger eine automatisierte Berechung durchführen lassen, für Überstundengehalt. Man bekommt ab 1- 4 Überstunden den Betrag X mehr und dann immer so weiter...
Will nur wissen was ich falsch mache da er nicht in die IF-Anweisung springt.

Danke für eure Hilfe 


```
IF(@ueStunden <=4)
	SET @nmLohn=@ueStunden*@Stundensatz
	SET @Ueberstundenbetrag =@ueStunden*@Sb4h 
	SET @Gehalt=@nmLohn+@Ueberstundenbetrag+@Festgehalt
	UPDATE dbo.monatsdaten SET MD_Ueberstundenbetrag=@Ueberstundenbetrag    WHERE MD_ID = (select MD_ID from dbo.monatsdaten where MD_ID=@test)
	UPDATE dbo.monatsdaten SET MD_Gehalt=@Gehalt WHERE MD_ID = (select MD_ID from dbo.monatsdaten where MD_ID=@test)
```


----------



## deepthroat (4. Februar 2011)

Hi.

Es gibt hier auch direkt ein Forum für RDBMS -> http://www.tutorials.de/relationale-datenbanksysteme/

Ein if gilt immer nur für die nächste Anweisung (in deinem Fall nur für das "set @nmLohn..."). Verwende einen Block:

```
IF(@ueStunden <=4)
BEGIN
SET @nmLohn=@ueStunden*@Stundensatz
    SET @Ueberstundenbetrag =@ueStunden*@Sb4h 
    SET @Gehalt=@nmLohn+@Ueberstundenbetrag+@Festgehalt
    UPDATE dbo.monatsdaten SET MD_Ueberstundenbetrag=@Ueberstundenbetrag    WHERE MD_ID = (select MD_ID from dbo.monatsdaten where MD_ID=@test)
    UPDATE dbo.monatsdaten SET MD_Gehalt=@Gehalt WHERE MD_ID = (select MD_ID from dbo.monatsdaten where MD_ID=@test)
END
```
Gruß


----------



## unfaehig (7. Februar 2011)

/Könnte ich vllt nen MOVE Bekommen in RDBMS


Ok jetzt schmeißt mir das ding ne Fehlermeldung von wegen :

Arithmetischer Überlauffehler beim Konvertieren von int in den numeric-Datentyp.


Hab nirgends INT verwendet nur Decimal und Stellen sind genause wie in der DB begrenzt.hmmm


----------

