Я использую SQL Management Studio 2012 и у меня есть хранимая процедура, которая при выполнении вставляется в таблицу, как показано ниже
Column1 Column2 Column3
AA AA1 NULL
AB AB1 NULL
AC AC1 NULL
Мне нужно вручную заполнить значения NULL (я знаю этоне идеален, но это затруднительное положение, в котором я нахожусь)
Column1 Column2 Column3
AA AA1 1234 --manual input
AB AB1 2468 --manual input
AC AC1 3579 --manual input
Первоначально моя хранимая процедура была настроена примерно так:
ALTER PROCEDURE [usp_My_Stored_Procedure]
AS BEGIN
DELETE table1
INSERT table1
Select * from (
select
Column1,Column2,Column3
from another table
where Column3 IS NULL
) as SP
;
END
Теперь, когда она выполняется,удалите все, что я ввел в столбец 3. Если я избавлюсь от «УДАЛИТЬ таблицу1» и оставлю ВСТАВКУ, она просто продолжит дублировать все.Мне просто нужно обновить новые строки, как они появляются.
С помощью ответа Зайнулса, приведенного ниже, я попробовал следующее
ALTER PROCEDURE [usp_My_Stored_Procedure]
AS BEGIN
MERGE Table1 as d
USING SP as s
ON (d.Column1 = S.Column1)
WHEN NOT MATCHED BY TARGET THEN
INSERT (Column1, Column2, Column3 )
VALUES (s.Column1, s.Column2, s.Column3)
WHEN MATCHED THEN
UPDATE SET d.Column1 = s.Column1, d.Column2 = s.Column2, d.Column3 = s.Column3
WHEN NOT MATCHED BY SP THEN DELETE
Select * from (
select
Column1,Column2,Column3
from another table
where Column3 IS NULL
) as SP
;
END
Это не сработало, думаю, я путаюсь с источником и местом назначения.В этом случае я использовал пункт назначения в качестве таблицы, в которую я вводил данные ('Table1'), а источник в качестве имени производной таблицы (SP)