Ошибка в запросе - 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;

Объяснение кода листинга программы

  1. Создается переменная query, которая получает значение, сконкатенированное из нескольких строк.
  2. В переменной query формируется строка SQL-запроса.
  3. Строка запроса содержит INSERT INTO ... VALUES (CURDATE(), @0_25, @share_0_25, @25_50, @share_25_50, @50_75, @share_50_75, @75_100, @share_75_100).
  4. Выполняется запрос с помощью EXECUTE stmt;.
  5. Для подготовки запроса используется PREPARE stmt FROM @query;.
  6. В запросе используется CURDATE(), чтобы вставить текущую дату в таблицу.
  7. В запросе используются переменные @0_25, @share_0_25, @25_50, @share_25_50, @50_75, @share_50_75, @75_100, @share_75_100, которые должны быть определены или установлены в значения до выполнения запроса.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5