Задать вопрос
  • Как создать XML определенного формата из таблицы с помощью FOR XML PATH?

    @RusCosinus Автор вопроса
    Akina, у меня есть решение, найденное кем-то давно в интернете и использованное в коде. Но на мой взгляд оно очень кривое и плюс еще нужен курсор. Если вам интересно выглядит оно так:
    declare
    	@xml xml
    	,@xml_f xml
    
    select @xml =
    (
    select CityID as "CityID"
    	   ,CarBrand as "CarBrand"
    	   ,CarModel as "CarModel"
    	   ,CarBodyType as "CarBodyType"
    	   ,CarYear as "CarYear"
    	   ,CarColor as "CarColor"
    from TestAutoInfo
    for xml path('data')  
    )
    
    --выведем промежуточный XML
    select @xml
    
        declare @fields table(
         id int not null
        ,fname varchar(100)
        ,flabel varchar(100)
        )
    
        insert into @fields(id, fname, flabel)
        select 1, 'CityID', 'CityID'
        union all
        select 2, 'CarBrand', 'CarBrand'
        union all
        select 3, 'CarModel', 'CarModel'
        union all
        select 4, 'CarBodyType', 'CarBodyType'
        union all
        select 5, 'CarYear', 'CarYear'
        union all
        select 6, 'CarColor', 'CarColor'
    
    	--Какая-то неизвестная магия
    	set @xml_f = (
    				select c.col_name as 'field/@name'
    						,isnull(@xml.value('(//*[local-name()=sql:column("c.col_name")])[1]','varchar(max)'),'') as 'field'
    				from (select fname as col_name from @fields) c
    				for xml path(''), root('data')
    				)
    
    	--Выведем окончательный XML и поймем, что он обрабатывает только один блок, поэтому и нужен курсор
    	select @xml_f
    Написано
  • Как создать XML определенного формата из таблицы с помощью FOR XML PATH?

    @RusCosinus Автор вопроса
    Akina,
    К сожалению, не устраивает, в том то и дело. Именно в этом формате мои данные должны обрабатываться на другой стороне.
    Обычный вариант реализуется легко, но это не то, что нужно. Как это не прискорбно :)
    Написано
  • Как вывести id?

    @RusCosinus
    Ниже написал вариант для MS SQL, но потом посмотрел, вроде как в Oracle то же так можно, по крайней мере если судить по вот этой доке https://www.oracletutorial.com/oracle-analytic-fun...