43 lines
1.6 KiB
Transact-SQL
43 lines
1.6 KiB
Transact-SQL
BEGIN
|
|
DECLARE
|
|
@CONTROL_ID INTEGER,
|
|
@RECORD_ID INTEGER,
|
|
@ACT_RECORD_ID INTEGER,
|
|
@VALUE VARCHAR(MAX),
|
|
@NEW_VALUE VARCHAR(MAX),
|
|
@INDEX INTEGER
|
|
|
|
DECLARE c_Control_Values CURSOR FOR
|
|
select CONTROL_ID,RECORD_ID FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID IN (SELECT GUID FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID = 2) GROUP BY CONTROL_ID,RECORD_ID HAVING COUNT(GUID) > 1 ORDER BY RECORD_ID
|
|
OPEN c_Control_Values
|
|
FETCH NEXT FROM c_Control_Values INTO @CONTROL_ID, @RECORD_ID
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
PRINT 'RECORD: ' + CONVERT(VARCHAR(10),@RECORD_ID)
|
|
SET @NEW_VALUE = ''
|
|
SET @INDEX = 0
|
|
DECLARE c_ROWVALUES CURSOR FOR
|
|
SELECT VALUE FROM TBPMO_CONTROL_VALUE WHERE CONTROL_ID = @CONTROL_ID AND RECORD_ID = @RECORD_ID
|
|
OPEN c_ROWVALUES
|
|
FETCH NEXT FROM c_ROWVALUES INTO @VALUE
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
IF @INDEX = 0
|
|
SET @NEW_VALUE = @VALUE
|
|
ELSE
|
|
SET @NEW_VALUE += ';' + @VALUE
|
|
SET @INDEX += 1
|
|
FETCH NEXT FROM c_ROWVALUES INTO @VALUE
|
|
END
|
|
PRINT 'JETZT DAS UPDATE UND DELETE FÜR RECORD: ' + CONVERT(VARCHAR(10),@RECORD_ID)
|
|
PRINT '@NEW_VALUE: ' + CONVERT(VARCHAR(500),@NEW_VALUE)
|
|
DELETE FROM TBPMO_CONTROL_VALUE WHERE RECORD_ID = @RECORD_ID AND CONTROL_ID = @CONTROL_ID
|
|
INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID,RECORD_ID,VALUE) VALUES (@CONTROL_ID,@RECORD_ID,@NEW_VALUE)
|
|
CLOSE c_ROWVALUES
|
|
DEALLOCATE c_ROWVALUES
|
|
|
|
FETCH NEXT FROM c_Control_Values INTO @CONTROL_ID, @RECORD_ID
|
|
END
|
|
CLOSE c_Control_Values
|
|
DEALLOCATE c_Control_Values
|
|
END |