シンプルなクライアントからログファイルに情報を送信して、後で処理するために作成したIDを使用したいと考えています。単純なストアドプロシージャ内でSCOPE_IDENTITY関数を正しく使用する
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
私は、次のコードを編集した:これが最善のアプローチであるように
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;
見た目はOKです。これを行うには、 'output'パラメータを使って戻り値を使う方法がたくさんあります。 – Oded
これに関する具体的な懸念事項は何ですか? – Oded
私は最初のクライアント/サーバアプリケーションを構築しているので、基本的な質問です。このプロシージャは実行する最初のものであり、IDはその行に渡されます。つまり、IDはクライアントに戻って3つまたは4つの他のストアドプロシージャに渡されます。 – whytheq