Ошибка в запросе - MySQL (220102)
Формулировка задачи:
Всем привет!
Написал процедуру, но синтаксис не валидируется... а понять, в чем проблема не могу... кто поможет, буду признателен)
CREATE PROCEDURE calculate_precisions ( IN distribution VARCHAR(45), IN PRECISION VARCHAR(45), IN total_schedules INT, IN destination VARCHAR(100) ) BEGIN SET @distribution = distribution; SET @PRECISION = PRECISION; SET @total_schedules = total_schedules; SET @destination = destination; ....... END
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 'precision VARCHAR(45), IN total_schedules INT, IN destination VARCHAR(10' at line 4
Решение задачи: «Ошибка в запросе»
textual
Листинг программы
SET @query = CONCAT ( 'INSERT INTO ', destination, '(processing_date, 0_25, 0_25_share, 25_50, 25_50_share, 50_75, 50_75_share, 75_100, 75_100_share) VALUES (CURDATE(), @0_25, @share_0_25, @25_50, @share_25_50, @50_75, @share_50_75, @75_100, @share_75_100)' ); PREPARE stmt FROM @query; EXECUTE stmt;
Объяснение кода листинга программы
- Создается переменная
query
, которая получает значение, сконкатенированное из нескольких строк. - В переменной
query
формируется строка SQL-запроса. - Строка запроса содержит
INSERT INTO ... VALUES (CURDATE(), @0_25, @share_0_25, @25_50, @share_25_50, @50_75, @share_50_75, @75_100, @share_75_100)
. - Выполняется запрос с помощью
EXECUTE stmt;
. - Для подготовки запроса используется
PREPARE stmt FROM @query;
. - В запросе используется
CURDATE()
, чтобы вставить текущую дату в таблицу. - В запросе используются переменные
@0_25
,@share_0_25
,@25_50
,@share_25_50
,@50_75
,@share_50_75
,@75_100
,@share_75_100
, которые должны быть определены или установлены в значения до выполнения запроса.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д