この関数は、現在のスコープにSCOPE_IDENTITY()
挿入された最後のID値を返します。実行している動的クエリは現在のスコープにありません。目的の結果を得るには、動的クエリを呼び出すか、別のメソッドを使用する必要があります。EXEC sp_executesql
SCOPE_IDENTITY()
使用方法は次のSCOPE_IDENTITY()
とおりです。
DECLARE @ID int;
EXEC sp_executesql N'
INSERT INTO …;
SET @ID = SCOPE_IDENTITY();
', N'@ID int OUTPUT', @ID OUTPUT;
RETURN @ID;
または、次のことを試すことができます。
DECLARE @LastID TABLE (ID int);
INSERT INTO @LastID (ID)
EXEC sp_executesql N'
INSERT INTO …;
SELECT SCOPE_IDENTITY();
';
RETURN (SELECT TOP 1 ID FROM @LastID);
SQL Server 2005以降を使用している場合は、上記のメソッドを変更して、の代わりにのOUTPUT
句を使用できます。INSERT
SELECT SCOPE_IDENTITY()