gpt4 book ai didi

mysql - MySQL:在CONCAT INSERT INTO SELECT的WHERE子句中使用局部变量

转载 作者:行者123 更新时间:2023-11-29 17:31:36 25 4
gpt4 key购买 nike

我只想创建一个过程,该过程创建一个具有变量名的表并插入我从另一个表中选择的内容。表的创建仍然有效,但是尝试以下代码中的include时,我总是收到错误消息。

它总是说我在部分中有某种语法错误,在这里我用参数中的变量检查报价的日期。

我希望你们能理解我并能帮助我。

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');

最佳答案

您将不得不将日期视为文字(用引号引起来)。

[...]
WHERE status = ''angenommen'' OR status = ''offen''
AND dateOfOffer >= "',@start_d,'" AND dateOfOffer <= "',@end_d,'"
GROUP BY unternehmen.unternehmen_ID
[...]

关于mysql - MySQL:在CONCAT INSERT INTO SELECT的WHERE子句中使用局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50583325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com