Диграфы были созданы для программистов, которые не имели клавиатуры, которая поддерживала набор символов ISO 646.
Мы проделали много работы, аналогичной вашему примеру. Мы не беспокоились о запрете SQL, отчасти потому, что у нас есть полный и полный контроль над перемещаемыми данными - вредоносный код просто не может попасть через ETL в наше хранилище данных.
Некоторые мысли и советы:
Ха. Все это потребовалось написать, чтобы запомнить функцию QUOTENAME (). Быстрый тест, казалось бы, показывает, что добавление его в ваш код подобным образом будет работать (вы получите сообщение об ошибке, а не отброшенную временную таблицу):
SELECT
@columns =
STUFF
(
(
SELECT DISTINCT
', [' + quotename(ColumnB, ']') + ']'
FROM
#PivotTest
FOR XML PATH('')
), 1, 1, ''
)
Это должно работать для ситуаций поворота (и отмены поворота), поскольку вы почти всегда должны [заключить в скобки] ваши ценности.