我有下面需要帮助的存储过程。其目的是找出暂存数据库和生产数据库之间的差异。当它发现差异时,存储过程将使用正确的信息更新生产数据库。问题是有时数据库之间存在不止一个差异。存储过程一次只能处理 DB 之间的一个差异。我希望存储过程能够处理它发现的尽可能多的差异。如果它一次只能处理一个差异,则存储过程将需要持续运行。非常感谢任何想法或帮助。
`BEGIN TRANSACTION
DECLARE @FILENUM NVARCHAR(30)
SET @FILENUM = ( SELECT TOP 1 B.ID FROM DBO.ABC_FILE_NUMBER F WITH ( NOLOCK )
JOIN DBO.REL_PRIMARY_NUMBER R WITH ( NOLOCK ) ON F.ID = R.FILE_NUMBER_ID
JOIN DBO.ABC_PRIMARY_NUMBER P WITH ( NOLOCK ) ON R.PRIMARY_NUMBER_ID = P.ID
JOIN DBO.STAGINGDATA S WITH ( NOLOCK ) ON F.FILE_NUMBER_ALIAS = S.ID
WHERE S.PRIMARYNUMBER <> P.PRIMARY_NUMBER_ALIAS)
DECLARE @PRIMNUM NVARCHAR(30)
SET @PRIMNUM = ( SELECT DISTINCT P.ID FROM DBO.STAGINGDATA S WITH ( NOLOCK )
JOIN DBO.ABC_PRIMARY_NUMBER P WITH ( NOLOCK ) ON P.PRIMARY_NUMBER_ALIAS = S.PRIMARYNUMBER
WHERE S.ID = ( SELECT F.FILE_NUMBER_ALIAS FROM ABC_FILE_NUMBER WHERE ID = @FILENUM))
UPDATE DBO.REL_PRIMARY_NUMBER
SET PRIMARY_NUMBER_ID = @PRIMNUM
WHERE FILE_NUMBER_ID = @FILENUM
UPDATE DBO.ABC_WORKSPACE
SET PRIMARY_NUMBER_ID = @PRIMNUM
WHERE FILE_NUMBER_ID = @FILENUM
UPDATE DBO.ABC_DOCUMENT
SET PRIMARY_NUMBER_ID = @PRIMNUM
WHERE FILE_NUMBER_ID = @FILENUM
UPDATE DBO.ABC_FILE_NUMBER
SET MODIFIED_TIME = GETDATE(), MODIFIED_BY_ID = '21403'
WHERE FILE_NUMBER_ID = @FILENUM
COMMIT`