Gast
#2785511
In einer Anwendung schiebe ich Daten in eine Datenbank auf einem Microsoft SQL Server 2008 (aktuell Express). Sagen wir beispielsweise, ich wollte Farben von Autos speichern. Ich habe also eine Tabelle Autofarben (Spalten AutoID und FarbID) und eine Tabelle AutofarbenID (FarbID und Farbe). Meine gespeicherte Prozedur soll eine Farbe entgegennehmen und ihre FarbID zurueckliefern, wenn sie existiert, oder sie anlegen und zurueckliefern. Meine Prozedur saehe also in etwa so aus: ALTER Procedure sp_farbid ( @farbe NCHAR(100) ) BEGIN SET NOCOUNT ON SELECT farbid.farbid FROM farbid WHERE farbid.farbe = @farbe IF @@ROWCOUNT = 0 BEGIN INSERT INTO farbid VALUES (@farbid) SELECT scope_identity() END END Leider liefert die Prozedur, wenn sie einen Eintrag anlegt, nichts zurueck und muesste dann ein zweites Mal aufgerufen werden, was sie ueberfluessig macht. a) Gibt es eine Moeglichkeit, die Prozedur zu reparieren, was sollte ich verbessern? b) Ist mein Ansatz so richtig oder loest 'man' das anders? Vielen Dank