У меня есть хранимая процедура, которая выполняет динамический запрос, поэтому у меня есть строка с именем @template
, которая в моем коде заменяется некоторыми инструкциями, поэтому после некоторой обработки у меня возникает очень большой запрос:
--Init the template and tell it to insert results to TEMPORAL table
SET @template = 'SELECT {LotsOfColumns},{EvenMoreColumns} INTO TEMPORAL FROM '+ @table_name;
--some handling substitute {LotsOfColumns} and {EvenMoreColumns}
--...
--...
-- replace strings
SET @template = REPLACE(@template, '{LotsOfColumns}', @templateLotsOfColumns);
SET @template = REPLACE(@template, '{EvenMoreColumns}', @templateEvenMoreColumns);
--very big query!!
EXEC (@template);
Поскольку таблица TEMPORAL является сгенерированной во время выполнения, я получаю сообщение об ошибке 1024 предельного столбца
Сообщение 4505, уровень 16, состояние 1, процедура процедуры, строка 3
превышает максимум 1024 столбцов.
- Есть ли способ указать, что таблица содержит более 1024 столбцов?
Другой вариант, о котором я думал:
Поскольку я делаю оператор выбора, я получаю много результатов и вставляю их в столбец, есть ли способ изменить вышеуказанный запрос, поэтому я не делаю этого:
col1 col2 col3 ... col1024 ... col3000
-------------------------------------------
14 34 45 ... 534 ... 657
but this??:
id resultFromquery
--------------
1 1
2 34
3 45
...
1024 534
...
3000 657
Полагаю, это лучшее решение ... Но я не знаю, как изменить мой запрос:
SET @template = 'SELECT {LotsOfColumns},{EvenMoreColumns} INTO TEMPORAL FROM '+ @table_name;
--some handling sustitute {LotsOfColumns} and {EvenMoreColumns}
EXEC @template;
для этого