I\'d like to simply send some information from a simple client to a log file and then use the identity created for further processing.
Is the following use of SCOP
RETURN SCOPE_IDENTITY()
is returning a 0
with Dapper.
I replaced it with
SELECT SCOPE_IDENTITY()
and now it is returning the actual value.
Seems like this is the best approach - can see a few references advising to only use RETURN
as a way of communicating state or errors so an OUTPUT
parameter is better practice:
ALTER PROCEDURE [dbo].[LogSearch]
@userName VARCHAR(50),
@dateTimeStart DATETIME,
@searchID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [WH].[dbo].[tb_Searches]
(
UserName,
DateTimeStart
)
VALUES
(
@userName,
@dateTimeStart
);
SET @searchID = SCOPE_IDENTITY();
END;
You can also use SCOPE_IDENTITY
in two separate statements, such as:
Assuming that the table has an identity field of course
Insert into [ABCTable]
([A], [B])
select 'WhateverA', 'WhateverB'
Then use the function SCOPE_IDENTITY()
in the Where
clause, like:
Update [ABCTable] Set [A] = 'UpdateA', [B] = 'UpdateB'
Where IdentityField = SCOPE_IDENTITY()
Thus, the scope_identity is a reliable link to the record just inserted.