SqlScripts/01_SMART_UP_TOOLS/08_ADDI/SQL/Hilfe/Split;durchführen.sql
2023-04-14 10:32:31 +02:00

43 lines
1.4 KiB
Transact-SQL

BEGIN
DECLARE
@GUID INTEGER,
@CONTROL_ID INTEGER,
@RECORD_ID INTEGER,
@VALUE VARCHAR(MAX),
@NEW_VALUE VARCHAR(MAX),
@INDEX INTEGER,
@ADDED_WHO VARCHAR(50)
DECLARE c_Values CURSOR FOR
SELECT GUID,CONTROL_ID,RECORD_ID,VALUE,ADDED_WHO FROM TBPMO_CONTROL_VALUE WHERE VALUE LIKE '%;%' AND CONTROL_ID NOT IN (SELECT GUID FROM TBPMO_CONTROL WHERE CONTROL_TYPE_ID = 2) ORDER BY RECORD_ID,CONTROL_ID
OPEN c_Values
FETCH NEXT FROM c_Values INTO @GUID,@CONTROL_ID,@RECORD_ID,@VALUE,@ADDED_WHO
WHILE @@FETCH_STATUS = 0
BEGIN
SET @INDEX = 0
--#####
DECLARE c_NEWVALUES CURSOR FOR
SELECT Item FROM dbo.FN_SPLIT_STRING(@VALUE, ';')
OPEN c_NEWVALUES
FETCH NEXT FROM c_NEWVALUES INTO @NEW_VALUE
WHILE @@FETCH_STATUS = 0
BEGIN
SET @NEW_VALUE = LTRIM(@NEW_VALUE)
IF @INDEX = 0
UPDATE TBPMO_CONTROL_VALUE SET VALUE = @NEW_VALUE WHERE GUID = @GUID
ELSE
INSERT INTO TBPMO_CONTROL_VALUE (CONTROL_ID,RECORD_ID,VALUE,ADDED_WHO) VALUES
(@CONTROL_ID,@RECORD_ID,@NEW_VALUE,@ADDED_WHO)
PRINT CONVERT(VARCHAR(5),@CONTROL_ID) + '#' + CONVERT(VARCHAR(5),@INDEX) + '-' + @NEW_VALUE
SET @INDEX = @INDEX + 1
FETCH NEXT FROM c_NEWVALUES INTO @NEW_VALUE
END
CLOSE c_NEWVALUES
DEALLOCATE c_NEWVALUES
--#####
FETCH NEXT FROM c_Values INTO @GUID,@CONTROL_ID,@RECORD_ID,@VALUE,@ADDED_WHO
END
CLOSE c_Values
DEALLOCATE c_Values
END