Моя хранимая процедура вызывает API, который создает доступное представление данных. Мне нужно вставить записи из созданного представления в локальную таблицу.
Пока что процедура выглядит так, как показано ниже.
- Сгенерированный вид расходных материалов -
[vw_OriginalView_Temp]
- Локальная таблица, в которую нужно вставить данные, -
LocalTable
. В этой таблице не будет первичного ключа.
Условия для вставки и обновления и пропуска дубликатов
ПРОПУСТИТЬ - если в локальной таблице существует запись с точной комбинацией
CustomerGatcaStatusId, AccessNumber, AscertainMethodID, ExtendedStatusId, LastModifiedDate, LastModifiedBy, LastReviewedBy
.ОБНОВЛЕНИЕ - если существует запись с точной комбинацией
CustomerGatcaStatusId, AccessNumber, AscertainMethodID, ExtendedStatusId
, обновите значенияLastModifiedDate, LastModifiedBy, LastReviewedBy
значениями из представленияvw_OriginalView_Temp
INSERT - если какая-либо комбинация
CustomerGatcaStatusId, AccessNumber, AscertainMethodID, ExtendedStatusId
еще не существует вLocal
таблице.
Пожалуйста, предлагайте и не стесняйтесь комментировать, если вам нужны дополнительные разъяснения. Цените помощь.
ALTER PROCEDURE [dbo].[StoredProcedure1]
AS
BEGIN
DECLARE @return_value INT,
@RetCode INT,
@RunID,
@IntraDayID INT
SET @RunID = NULL
SET @IntraDayID = NULL
EXEC @return_value = [Staging].[API_GenerateTempView]
@SchemaName = N'XXXX',
@ViewName = N'vw_OriginalView',
@ColumnList = N'CustomerGatcaStatusId, AccessNumber, AscertainMethodID, ExtendedStatusId, LastModifiedDate, LastModifiedBy, LastReviewedBy',
@OrderByList = NULL,
@ResultSet = 1,
@RunID = @RunID,
@IntraDayID = @IntraDayID,
@RetCode = @RetCode OUTPUT
INSERT INTO LocalTable(CustomerGatcaStatusId, AccessNumber, AscertainMethodId, ExtendedStatusId, LastModifiedDate, StatusCode, LastModifiedBy, LastReviewedBy)
SELECT
CustomerGatcaStatusId, AccessNumber, AscertainMethodId,
ExtendedStatusId, LastModifiedDate, '11', LastModifiedBy, LastReviewedBy
FROM
[XXXX].[vw_OriginalView_Temp]
--IF EXISTS (SELECT * FROM AeoiSdtTemp)
--BEGIN
-- DELETE FROM AeoiSdtTemp
--END
END