У меня есть таблица FlowTrack
:Вставка не происходит в Merge, где обновление происходит
CREATE TABLE [dbo].[FlowTrack]
(
[RowID] [tinyint] IDENTITY(1,1) NOT NULL,
[ApplicationNo] [varchar](50) NOT NULL,
[StatusID] [tinyint] NOT NULL,
[UpdateType] [varchar](100) NULL,
[CreatedDate] [datetime] NULL,
[CreatedBy] [varchar](50) NULL
) ON [PRIMARY]
Sample данные:
RowID ApplicationNo StatusID UpdateType CreatedDate CreatedBy
1 BPS/ANA/MO/7/0146215 1 3 2015-06-17 12:59:56.387 Tests
2 BPS/BHI/20/0164615 1 3 2015-06-17 12:57:57.727 Tester
3 BPS/BHI/6/0204815 1 3 2015-06-17 12:57:57.727 Tester
Моя процедура:
ALTER procedure Flowtrack
(@APPNO varchar(50),
@vc_status CHAR(1),
@CreatedBy varchar(50))
AS
BEGIN
MERGE INTO [dbo].Flowtrack AS target
USING (SELECT ApplicationNo, StatusID
FROM Flowtrack
WHERE ApplicationNo = @APPNO AND [StatusID] = @vc_status) AS source
ON target.ApplicationNo = Source.ApplicationNo
WHEN MATCHED THEN
UPDATE
SET
target.ApplicationNo = source.ApplicationNo,
target.StatusID = source.StatusID,
target.UpdateType = 3,
target.CreatedDate = getdate(),
target.CreatedBy = @CreatedBy
WHEN NOT MATCHED BY TARGET THEN
INSERT
([ApplicationNo], [StatusID], [UpdateType],
[CreatedDate], [CreatedBy])
VALUES (source.ApplicationNo, source.StatusID, 3,
getdate(), @CreatedBy);
end
Когда я обновление обновляется
EXEC Flowtrack 'BPS/ANA/MO/7/0146215',3,'Tests'
но при попытке вставить, не вставляя новый рекорд
Я не могу понять, почему он не вставляя
Чтобы вставить новое приложение не
EXEC Flowtrack 'BPS/ANA/MO/7',3,'Test'
хранимая процедура принимает 3 параметра, вы отправляете 4 –
мои плохие только 3 параметра Я удаляю, что передача параметра @ t-clausen.dk – mohan111
'source.StatusID' выиграл Нет, если запись не сопоставлена – StuartLC