Hallo,
Ich habe eine Tabelle [Sprachen], in welcher als Spalten nur die [Id] und die [Sprache] erfasst werden. Jetzt bin ich dabei eine Gespeicherte Prozedur zu erstellen, über diese sollen neue Sprachen hinzugefügt werden.
Falls die neu einzufügende Sprache nicht existiert wird eine neue [Sprache] erstellt, auf jeden Fall möchte ich aber diesen neuen Eintrag als Rückgabewert der Prozedur haben. Zusätzlich als Outputparameter die Id übergeben.
Ziel der Aktion ist es in anderen Prozeduren und auch später über mein C# Programm damit zu arbeiten, also wahlweise nur die [ID] zu verarbeiten und/oder den Tabellendatentyp Sprache im C# Programm.
Anbei mein Lösungsvorschlag, besonders unsicher bin ich mir bei der letzten Zeile: "SELECT @Id AS ID, @Sprache AS Sprache"
ALTER PROCEDURE InsertSprachen
@Sprache NVARCHAR(256)
, @Id INT OUTPUT
ASBEGIN
IF EXISTS (SELECT TOP (1) * FROM Sprachen WHERE Sprache = @Sprache) BEGIN SET @Id = @@IDENTITY END ELSE BEGIN INSERT INTO Sprachen([Sprache]) VALUES(@Sprache) SET @Id = SCOPE_IDENTITY() END
SELECT @Id AS ID, @Sprache AS SpracheEND