TSQL внутри динамического запроса

Я нахожусь в процессе создания динамического запроса SQL, но я столкнулся с проблемой. Мне нужно создать вложенные селекторы в этом запросе и вывести их результаты также в виде XML, поскольку возвращается более одного значения.

-- Open our primary select
SELECT @SQL = 'SELECT('

    -- Begin the first sub select of primary fields
    SELECT @SQL += 'SELECT '

        -- Go through the primary fields temp table and print out the column names
        SELECT @SQL += (
            SELECT f.alias + ', ' 
            FROM @primaryFields AS f
            FOR XML PATH('')
        )
        -- Remove the trailing comma from the last field
        SELECT @SQL = LEFT(@SQL, LEN(@SQL) -1) + ' '

        -- Begin the select statement
        SELECT @SQL += ' FROM View_BS_Render_Dashboard as db '

        -- Create our WHERE Clause
        SELECT @SQL += 'WHERE '

        -- Test Data
        SELECT @SQL += 'db.initiativeCreatorEmpID = @initCreator '

        SELECT @SQL += 'FOR XML PATH(''primary''), ELEMENTS, ROOT(''primaryFields'')'

    SELECT @SQL += ')'

-- Print the closing XML data
SELECT @SQL += 'FOR XML PATH(''data''), ELEMENTS, ROOT(''root'')'

-- Execute the SP
PRINT @SQL
EXEC sp_executesql @SQL, N'@initCreator varchar(12)', @initCreator='1234'

Проблема, с которой я сталкиваюсь, связана с ВНУТРЕННИМ FOR XML, Это приводит к тому, что все поля выводятся в виде строки вместо XML.

Вот вывод:

<root>
  <data>&lt;primaryFields&gt;&lt;primary&gt;&lt;initiativeTitle&gt;Test&lt;/initiativeTitle&gt;&lt;initiativeDescriptionPreview&gt;Test Desc&lt;/initiativeDescriptionPreview&gt;</data>
</root>

Как вы можете видеть, теги XML отлично работают на внешнем выборе, но не работают на внутреннем выборе. Если я закомментирую внешнее и просто использую внутреннее выделение, эти поля будут отображаться нормально (как xml).

Что мне здесь не хватает? У меня будет 3-4 субселекта в основном в главном корне / узле данных, поэтому мне нужно иметь возможность вкладывать XML.

0 ответов

Другие вопросы по тегам