На моем локальном компьютере mysql работает после SP без синтаксической ошибки.
REATE DEFINER=`root`@`localhost` PROCEDURE `createAccountNumber`(IN origin_type_id INT,IN membership_type_id INT)
BEGIN
DECLARE random_number,account_number Varchar(19) DEFAULT NULL;
SELECT FLOOR(RAND() * (9999999-1000000+1)+1000000) INTO random_number
WHERE 'number' NOT IN (SELECT number FROM random_numbers)
LIMIT 1;
INSERT INTO random_numbers VALUES(random_number);
SET @acc = CONCAT('100000',(select cast(origin_type_id as nchar)), (select cast(membership_type_id as nchar)), (select cast(random_number as nchar)));
SET @x= luhn_sum(@acc);
SET account_number = CONCAT(@acc,@x);
SELECT account_number;
ENDOperation failed: There was an error while applying the SQL script to the database. ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE 'number' NOT IN (SELECT number FROM random_numbers) LIMIT 1;
Версия mysql на моем локальном компьютере
mysql Ver 8.0.11 for Win64 on x86_64
На моем сервере версия mysql
mysql Ver 14.14 Distrib 5.6.41, for Linux
Если есть альтернатива, пожалуйста, предложите мне.
Это не работает, потому что нет столбца с номером. @ Tim Biegeleisen
Что ж, если number не существует, а 'number' не имеет смысла, тогда что вы пытаетесь сделать в своем коде?
Пожалуйста, добавьте полное описание того, что пытается сделать ваш сохраненный процесс.






Используйте
WHERE number NOT IN (SELECT number FROM random_numbers)... удалите одинарные кавычки вокруг поляnumber.