SQL не распечатывает мою переменную

Я работаю с хранимой процедурой SQL и динамическим SQL. Когда я пытаюсь отладить, все работает нормально, пока я не напечатаю свой @columnName.

это часть кода, которая вызывает проблемы:

DECLARE @query NVARCHAR(2000)
DECLARE @columnName NVARCHAR(250)
SELECT @query = 'SELECT myTable.value FROM myTable WHERE myConditions'
    EXECUTE sp_executesql @query, N'@columnName NVARCHAR(30) OUTPUT', @columnName OUTPUT
    PRINT N'query='+@query
    set @query = ''
    PRINT N'query after reset='+@query
    PRINT N'columnName='+@columnName
    PRINT N'any other message'
Select @query = 'SELECT myValues AS '''+@columnName+''',
                 FROM myTable2
                 WHERE myConditions';
EXEC(@query);

Это выходные сообщения:

query=SELECT myTable.value FROM myTable WHERE myConditions
query after reset=

any other message

Итак, где мой вывод columnName=?

ИЗМЕНИТЬ

Версия SQL: Microsoft SQL Server 2012 — 11.0.2100.60 (X64) 10 февраля 2012 г. 19:39:15 Авторское право (c) Microsoft Corporation Standard Edition (64-разрядная версия) в Windows NT 6.1 (сборка 7601: Пакет обновления 1) (гипервизор)


person Johan Hjalmarsson    schedule 05.07.2013    source источник
comment
SQL — это всего лишь язык структурированных запросов — язык, используемый многими системами баз данных, но не являющийся продуктом базы данных... многие вещи зависят от поставщика. конкретно - поэтому нам действительно нужно знать, какую систему баз данных (и какую версию) вы используете....   -  person marc_s    schedule 05.07.2013
comment
Добавлена ​​версия под EDIT   -  person Johan Hjalmarsson    schedule 05.07.2013
comment
Добавил соответствующий тег sql-server-2012 - вот где нужно указывать такие вещи....   -  person marc_s    schedule 05.07.2013


Ответы (2)


Добавьте SET CONCAT_NULL_YIELDS_NULL OFF в начало вашего процесса, чтобы остальная часть инструкции могла быть напечатана, если передано значение NULL.

person user1733170    schedule 31.07.2015
comment
Потрясающе... как раз то, что я хотел. Спасибо. - person Tsar Bomba; 15.07.2016
comment
Не знал, что это существует. Спасибо - person SPQR; 05.04.2019

Решил это.

Оказывается, если я добавлю что-то с нулем, результат будет нулевым. Поэтому, если я добавлю 'string to be printed'+NULL, ничего не будет напечатано. Теперь мне просто нужно выяснить, почему, черт возьми, моя переменная не имеет значения ^^ Пожелайте мне удачи!

person Johan Hjalmarsson    schedule 05.07.2013