У меня есть следующий SQLSQL NVARCHAR Variable Строка Concatenation
DECLARE @ColIdx INT;
DECLARE @FieldPrefix VARCHAR(50) = N'DX';
DECLARE @PivotColumnHeaders NVARCHAR(MAX);
SELECT @MaxColumnCount = 8;
WHILE @ColIdx < @MaxColumnCount
BEGIN
SELECT @PivotColumnHeaders =
COALESCE(@PivotColumnHeaders + N',
[' + @FieldPrefix + CAST(@ColIdx AS VARCHAR) + N'] AS NVARCHAR(100)',
N'[' + @FieldPrefix + CAST(@ColIdx AS VARCHAR) + N'] AS NVARCHAR(100)')
SET @ColIdx += 1
END;
PRINT @@PivotColumnHeaders;
Я ожидаю, что выход будет
[DX1] AS NVARCHAR(100), [DX2] AS NVARCHAR(100), ..., [DX8] AS NVARCHAR(100)
и это является частью более крупного СП, который собирается вставить эти столбцы в используя динамический SQL. Конечно, я не использовал SQL в течение многих лет, но это базовое, и я понятия не имею, почему @PivotColumnHeader
заканчивается пустым, или действительно почему PRINT
не работает (возможно, потому что переменная пуста!), Но почему?) - Я попытался обычно звук
RAISERROR (@PivotColumnHeaders, 10, 1) WITH NOWAIT;
вместо PRINT
но это не также возвращение ничего. Что я делаю неправильно?
Спасибо за ваше время.
Я бы попробовал изменить состав '@ ColIdx' на определенное значение« varchar »(например,« varchar (200) »или что бы это было разумно), вероятно, он усечен и NULLing из окончательного значения' @ PivotColumnHeaders'. –
Хорошо, я понимаю, что это была глупая ошибка. Я возьму это. У меня была долгая неделя, и это только вторник! Спасибо всем за ваше время ... – MoonKnight