Добавлен новый столбец MySQL при SELECT, но значение не увеличивается, хранимая процедура - PullRequest
0 голосов
/ 22 февраля 2019

Это такой длинный SELECT, поэтому я бы не показывал весь код, но проблема здесь:

SET @idcounter=0;
SET @SQL = CONCAT('
CREATE TABLE temp_',CONCAT(InvNum),CONCAT('(
SELECT
    '),CONCAT(@idcounter:=@idcounter+1),CONCAT(' as ID,
/* Show Output columns */
/*

Вместо значений 1, 2, 3 и т. Д., Он дает только 1везде.Поэтому я попробовал другое решение.

SET @SQL = CONCAT('SET ',CONCAT(@idcounter=0),CONCAT(';
CREATE TABLE temp_',CONCAT(InvNum),CONCAT('(
SELECT
    '),CONCAT(@idcounter:=@idcounter+1),CONCAT(' as ID,
/* Show Output columns */
/*

Но это выдает ошибку: Код ошибки: 1064. У вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'NULL' в строке 1 0,015 сек

Если честно, я не имею ни малейшего представления, что делать с этой проблемой.Чего мне не хватает?

"InvNum" - это рабочий параметр, это не может быть проблемой.

1 Ответ

0 голосов
/ 22 февраля 2019

Проблема вызвана использованием

CONCAT('(SELECT '), CONCAT(@idcounter:=@idcounter+1)

. Это заставляет оператор SELECT вставлять значение переменной @idcounter во время выполнения, в отличие от желаемой для строки SELECT..

Который устанавливает @SQL как:

CREATE TABLE temp_123 
SELECT 1 as ID

Вам просто нужно удалить избыточные CONCAT() вызовы.

SET @idcounter=0;
SET @SQL=CONCAT('
CREATE TABLE temp_',InvNum, '
SELECT @idcounter:=@idcounter+1 as ID')

Который устанавливает @SQL как:

CREATE TABLE temp_123 
SELECT @idcounter:=@idcounter+1 as ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...