Ошибка в запросе - 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
, которые должны быть определены или установлены в значения до выполнения запроса.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д