Мое требование - вернуть один результат xml путем преобразования запроса SQL, который возвращает несколько элементов в результате.
Итак, запрос SQL выглядит следующим образом:
SELECT 'z_milestonetype' AS 'ColumnValue/@name',
(select
task_milestone as milestone from PLAN where
request_id='1173' and task_milestone='PC') AS ColumnValue, null,
'z_actual_finish' AS 'ColumnValue/@name',
(select effect_dttm as
effect_dttm from PLAN where request_id='1173' and
task_milestone='PC') AS ColumnValue, null FOR XML PATH ('')
Это на самом деле возвращает XML, как показано ниже
<ColumnValue name="z_milestonetype">LM_EQ</ColumnValue>
<ColumnValue name="z_actual_finish">2020-07-15T18:30:00</ColumnValue>
Поскольку результат возвращает только один результат, это, похоже, работает нормально, но мое требование - установить XML с повторяющимися значениями. См. Ниже код XML.
<customObjectInstances objectCode="zsinboundtask">
<instance instanceCode="-1" objectCode="zinboundtask">
<CustomInformation>
<ColumnValue name="partition_code">NIKU.ROOT</ColumnValue>
<ColumnValue name="page_layout">odf.znecinboundtaskFrame</ColumnValue>
<ColumnValue name="name">-1</ColumnValue>
<ColumnValue name="code">-1</ColumnValue>
<ColumnValue name="z_milestonetype">TEST2</ColumnValue>
<ColumnValue name="z_finish">2020-09-25T18:30:00</ColumnValue>
</CustomInformation>
</instance>
<instance instanceCode="-1" objectCode="zinboundtask">
<CustomInformation>
<ColumnValue name="partition_code">NIKU.ROOT</ColumnValue>
<ColumnValue name="page_layout">odf.znecinboundtaskFrame</ColumnValue>
<ColumnValue name="name">-1</ColumnValue>
<ColumnValue name="code">-1</ColumnValue>
<ColumnValue name="z_milestonetype">TEST</ColumnValue>
<ColumnValue name="z_finish">2020-09-25T18:30:00</ColumnValue>
</CustomInformation>
</instance>
………
</customObjectInstances>
Если я использую тот же запрос, что и выше, для установки значений для нескольких строк, это покажет ошибку Подзапрос вернул более 1 значения. Это не разрешено, если подзапрос следует за =,! =, <, <=,>,> = Или когда подзапрос используется как выражение.
Это то, что я пробовал до сих пор.
SELECT
'-1' AS 'instance/@instanceCode', 'zinboundtask' AS 'instance/@objectCode',
null,
null,
'partition_code' AS 'ColumnValue/@name',
'NIKU.ROOT' AS ColumnValue,
null,
'page_layout' AS 'ColumnValue/@name',
'odf.zinboundtaskFrame' AS ColumnValue,
null,
'name' AS 'ColumnValue/@name',
'-1' AS ColumnValue,
null,
'code' AS 'ColumnValue/@name',
'-1' AS ColumnValue,
null,
'z_milestonetype' AS 'ColumnValue/@name',
(select task_milestone as milestone from PLAN where request_id='1173') AS ColumnValue,
null,
'z_finish' AS 'ColumnValue/@name',
(select effect_dttm as effect_dttm from PLAN where request_id='1173') AS ColumnValue,
null
FOR XML PATH ('CustomInformation')
Как объяснялось,
- Мне нужно, чтобы XML был отформатирован с помощью настраиваемых атрибутов
- Тем временем мне нужно отображать элементы из запроса выбора в учитывая xml формат
Мы будем очень благодарны за любые предложения.