Я работаю над хранимой процедурой, в которой мне нужно прочитать значения из файла XML и заменить эти значения на более понятный человеку формат, а затем сохранить их в базе данных. Например: значение в теге «NAT_FLAVOR» должно быть заменено на «Natural Flavor» и «ART_FLAVOR» на «Artificial Flavor», а затем его необходимо сохранить в базе данных.
<FSPROJECTMATRIX_0>
<PROJECT_CODE>O6UJ9A0000Z2</PROJECT_CODE>
<DM_OBJECT_TYPE>PROJECT0</DM_OBJECT_TYPE>
<FIELD1>1</FIELD1>
<FIELD2>tEST123</FIELD2>
<FIELD3 />
<FIELD4>4</FIELD4>
<FIELD5>OZ</FIELD5>
<FIELD6>2019-03-27 05:00:00.000</FIELD6>
<FIELD14>NAT_FLAVOR</FIELD14>
<FIELD15 />
<FIELD16>Q6UJ9A00O7X1</FIELD16>
<FIELD17 />
</FSPROJECTMATRIX_0>
<FSPROJECTMATRIX_0>
<PROJECT_CODE>O6UJ9A0000Z2</PROJECT_CODE>
<DM_OBJECT_TYPE>PROJECT0</DM_OBJECT_TYPE>
<FIELD1>1</FIELD1>
<FIELD2>TES456</FIELD2>
<FIELD3 />
<FIELD4>4</FIELD4>
<FIELD5>OZ</FIELD5>
<FIELD6>2019-03-27 05:00:00.000</FIELD6>
<FIELD14>ART_FLAVOR</FIELD14>
<FIELD15 />
<FIELD16>Q6UJ9A00O7X2</FIELD16>
<FIELD17 />
</FSPROJECTMATRIX_0>
IПопробовал IF-ELSE Statement, и он работает, если только один раз тег FSPROJECTMATRIX_0 появляется в файле. Если тег появляется несколько раз, я сталкиваюсь с проблемой.
DECLARE @COE_BUS_TEMP1 VARCHAR(100) = (SELECT fsxml.value('(FSPROJECT/C_BUSUNIT/text())[1]','VARCHAR(64)') FROM @fsxmlIN.nodes('/DataArea/fsxml') AS TEMPTABLE(fsxml))
DECLARE @COENATURALUS_11 VARCHAR(100) = (SELECT fsxml.value('(FIELD14/text())[1]','VARCHAR(100)') FROM @fsxmlIN.nodes('/DataArea/fsxml') AS TEMPTABLE(fsxml))
DECLARE @COENATURALEU_11 VARCHAR(100) = (SELECT fsxml.value('(FIELD17/text())[1]','VARCHAR(100)') FROM @fsxmlIN.nodes('/DataArea/fsxml') AS TEMPTABLE(fsxml))
DECLARE @SAMPLEUOM_TEMP1 VARCHAR(100) = (SELECT fsxml.value('(FIELD5/text())[1]','VARCHAR(100)') FROM @fsxmlIN.nodes('/DataArea/fsxml/FSPROJECT/FSPROJECTMATRIX_0') AS TEMPTABLE(fsxml))
IF @COE_BUS_TEMP1 = 'FRAGRANCE' OR @COE_BUS_TEMP1 = 'FLAVOR_US'
BEGIN
IF @COENATURALUS_11 = 'NATURAL' SET @COENATURALUS_11 = 'All Natural'
IF @COENATURALUS_11 = 'ART_FLAVOR' SET @COENATURALUS_11 = 'Artificial Flavor'
IF @COENATURALUS_11 = 'NAT_ART' SET @COENATURALUS_11= 'Natural AND Artificial'
IF @COENATURALUS_11 = 'NAT_FLAVOR' SET @COENATURALUS_11 = 'Natural Flavor'
IF @COENATURALUS_11 = 'SYNTHETIC' SET @COENATURALUS_11 = 'Synthetic'
IF @COENATURALUS_11 = 'UNKNOWN' SET @COENATURALUS_11 = 'Unknown'
END
Спасибо заранее, ребята.