У меня есть Microsoft SQL хранимую процедуру, которой имя столбца Я хочу установить с помощью переменной, которая передается в него:SQL: Выберите динамическое имя столбца на основе переменной
CREATE PROCEDURE [My_Procedure]
@myDynamicColumn varchar(50)
AS BEGIN
SELECT 'value' AS @myDynamicColumn
END
Это не работает ("Неправильный синтаксис «). Если я обернуть имя столбца с []:
SELECT 'value' AS [@myDynamicColumn]
Имя столбца буквально выводит как «@myDynamicColumn» вместо фактического значения. Есть какой-либо способ сделать это? Я изучил динамические статьи SQL, но ничего не то, о чем я прошу.
Почему? Это не то, как следует использовать SQL – gbn
@gbn: справа. @dotNewkow: Я уверен, что это всего лишь надуманный пример, иллюстрирующий вашу проблему, но gbn верен: это сложно, потому что это неправильно. Если вам нужно получить псевдоним возврата из хранимой процедуры, просто выполните наложение псевдонимов в вызывающем коде, где вы, очевидно, уже знаете значение @myDynamicColumn. Если вы разместите более подробную информацию о своей проблеме, возможно, мы можем предложить больше, чем динамический sql. –
Хороший вопрос. Да, я понимаю опасности динамического SQL. @Nathan Skerl, вы правы, обычно вы хотите установить это через код вызова. Тем не менее, я запускаю этот запрос в качестве подключения к данным в Excel для целей отчетности. Клиент хочет 4 отчета с относительно одинаковыми данными, но с разными именами столбцов, поэтому я сделал сохраненную процедуру для повторного использования и выполнил принцип DRY. Если бы это было представление, я мог бы сделать: «SELECT [column] AS [My Dynamic column name] FROM [My View]», но поскольку это хранимая процедура, я могу только «EXEC My_Procedure» «My Column Name». – dotNetkow