Chciałbym po prostu przesłać niektóre informacje z prostego klienta do pliku dziennika, a następnie użyć tożsamości utworzonej w celu dalszego przetwarzania.Prawidłowe użycie funkcji SCOPE_IDENTITY w prostej przechowywanej procedurze
Czy prawidłowe jest następujące użycie SCOPE_IDENTITY()
?
CREATE PROCEDURE [dbo].[LogSearch]
@userName VARCHAR(50),
@dateTimeStart DATETIME
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [WH].[dbo].[tb_Searches]
(
[UserName],
[DateTimeStart]
)
SELECT @userName,
@dateTimeStart;
SELECT SCOPE_IDENTITY() AS ProfileKey;
END;
EDIT
Mam edytowany kod na następujący:
ALTER PROCEDURE [dbo].[LogSearch]
@userName VARCHAR(50),
@dateTimeStart DATETIME
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [WH].[dbo].[tb_Searches]
(
[UserName],[DateTimeStart]
)
VALUES (@userName, @dateTimeStart);
RETURN SCOPE_IDENTITY();
END;
Wygląda OK. Można to zrobić na wiele sposobów - używając zwracanej wartości, używając parametru 'output'. – Oded
Jakie są twoje szczególne problemy z tym związane? – Oded
Buduję swoją pierwszą aplikację klient-serwer, stąd podstawowe pytanie. Ten proces będzie pierwszym zadaniem, a identyfikator zostanie przekazany dalej, tzn. Identyfikator wróci do klienta, a następnie zostanie przekazany do 3 lub 4 innych procedur przechowywanych. – whytheq