У меня есть хранимая процедура, и я использую оператор слияния для вставки и обновления.Этот аспект работает так, как мне нужно.
Однако вывод при вставке записи всегда равен 1, и я не могу понять, почему?Я был бы признателен, если бы кто-то мог пересмотреть эту процедуру и сообщить мне, что я могу делать неправильно.
CREATE PROCEDURE [dbo].[FileAdd]
@FileId int,
@FileData varbinary(max),
@ContentType Varchar(100),
@OperatorId int
AS
BEGIN
--In Memory Table to
DECLARE @MergeOutput TABLE
(
Id INT
);
--Merge needs a table to Merge with so using a CTE
WITH CTE AS (
SELECT @FileId as FileId)
--Merge
MERGE INTO [dbo].[Files] as T
USING CTE AS S
ON T.FileId = S.FileId
WHEN NOT MATCHED THEN
INSERT (
FileData,
ContentType,
OperatorIdCreated,
OperatorIdUpdated
)
VALUES(
@FileData,
@ContentType,
@OperatorId,
@OperatorId
)
WHEN MATCHED THEN
UPDATE SET
FileData = @FileData,
ContentType= @ContentType,
OperatorIdUpdated = @OperatorId,
Updated = GetDate()
OUTPUT
INSERTED.FileId
INTO @MergeOutput;
SELECT * FROM @MergeOutput;
END
GO