Möchte man einen Insert durchführen und daraufhin die generierte ID erhalten, so geht es beim Identifiert (Int) sehr einfach über den OUTPUT Parameter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CREATE PROCEDURE dbo.MyTable_Insert @ID Int OUTPUT , @ColumnA nvarchar(10) , @ColumnB nvarchar(10) INSERT INTO dbo.MyTable ( ColumnA , ColumnB ) VALUES ( @ColumnA , @ColumnB ) SELECT @ID = @@IDENTITY |
Beim Uniqueidentifier (GUID) ist das Selektieren eines @@Identity nicht möglich.
Daher muss eine temporäre Tabelle hinhalten:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
CREATE PROCEDURE dbo.MyTable_Insert @ID Uniqueidentifier OUTPUT -- Ebenfalls den OUTPUT Parameter , @ColumnA nvarchar(10) , @ColumnB nvarchar(10) CREATE TABLE #tmp(ID uniqueidentifier) -- Temporäre Tabelle erzeugen INSERT INTO dbo.MyTable ( ColumnA , ColumnB ) OUTPUT inserted.ID INTO #tmp -- Die ID in die temp. Tabelle schreiben VALUES ( @ColumnA , @ColumnB ) SELECT @ID = (SELECT TOP 1 ID FROM #tmp) -- Die ID wieder selektieren |
Login