Я просто хочу создать процедуру, которая создает таблицу с именем переменной и вставляет материал, который я выбираю из другой таблицы.Тем не менее создание таблицы работает, но я всегда получаю сообщение об ошибке при попытке включения в следующий код.
Всегда говорится, что у меня есть какая-то синтаксическая ошибка в той части, где я проверяю дату предложенияс переменными из параметров.
Я надеюсь, что вы, ребята, понимаете меня и можете мне помочь.
DELIMITER //
CREATE OR REPLACE PROCEDURE Prov (start_d DATE, end_d DATE, month_name CHAR(20))
BEGIN
SET @table := month_name;
SET @start_d = start_d;
SET @end_d = end_d;
SET @sql_text1 := CONCAT('
CREATE TABLE ',@table,'(
provision_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
provision float NOT NULL)'
);
PREPARE stmt from @sql_text1;
EXECUTE stmt;
SET @sql_text2 := CONCAT('
INSERT INTO', @table, '
(
SELECT Unternehmen.unternehmen_ID, Unternehmen.name,
SUM(Jobangebot.dauerStunden * Jobangebot.bezahlung * 0.02) AS Provision
FROM unternehmen
INNER JOIN Jobangebot ON Unternehmen_ID = unternehmen_ID_FK
WHERE status = ''angenommen'' OR status = ''offen''
AND dateOfOffer >=, ' @start_d,' AND dateOfOffer <=', @end_d,'
GROUP BY unternehmen.unternehmen_ID
)');
PREPARE stmt from @sql_text2;
EXECUTE stmt;
END
//
DELIMITER ;
call Prov('2018-05-01','2018-05-31', 'March');