Вот пример процедуры , написанной в MYSQL WORKBENCH версии 8.0. Но уже на строке 3 возникает ошибка "unexpected end of input found , expecting ;" Не могу понять, что не так. Знак ";" и ставил и убирал.
CREATE PROCEDURE TEST()
BEGIN
DECLARE test_id, last_id, i INT;
SET @TEST_ID = 1 -- start compare with this ID
SET @LAST_ID = 100 -- end compare with this ID
WHILE @TEST_ID <= @LAST_ID
BEGIN
SELECT @ID = (SELECT chip_number FROM chip_db WHERE chip_number = @TEST_ID)
IF @ID IS NULL
BEGIN
PRINT 'Missing ID: ' + CAST(@TEST_ID AS VARCHAR(10))
END
SET @TEST_ID = @TEST_ID + 1
END
END;
Вам нужно переопределить delimeter:
DELIMITER $$
CREATE PROCEDURE TEST()
BEGIN
DECLARE test_id , last_id, i INT;
SET @TEST_ID = 1; -- start compare with this ID
SET @LAST_ID = 100; -- end compare with this ID
WHILE @TEST_ID <= @LAST_ID
DO
SELECT @ID = (SELECT chip_number FROM chip_db WHERE chip_number = @TEST_ID);
IF @ID IS NULL THEN
BEGIN
SELECT concat('Missing ID: ', @TEST_ID);
END;
end if;
SET @TEST_ID = @TEST_ID + 1;
END WHILE;
END$$
Обратите внимание, насколько я знаю, в mysql print отсутствует, хотя с новыми версиями я не работал, в старых нужно было использовать select.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей