我正在转换所有现有的MSSQL数据库,并且存储过程卡在需要更新现有记录的新存储过程上。一旦将记录插入数据库并成功发送了电子邮件(或至少已传递给SMTP服务器),便从Web表单调用该过程。
我已经在MSSQL中运行了很长时间,但是正在尝试将其转换为MySQL。我要传递3个变量-一点表示已发送电子邮件,一个字符串指示已使用哪个SMTP服务器发送电子邮件,以及一个唯一的记录ID,因此我将知道要更新的记录。我还将日期和时间添加到另一个字段中,以了解该过程何时运行。
我得到了以下内容,但始终收到错误消息“#1064-您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在第7行的''附近使用正确的语法-但我没有在第7行上看不到任何东西-至少在我看来。
我要使用的代码是:
CREATE PROCEDURE `sp_Test`(
`emailSent_In` BIGINT UNSIGNED,
`emailTransport_In` VARCHAR(100),
`formSecret_In` VARCHAR(32)
)
BEGIN
SET @`query` := CONCAT('UPDATE ',`tbl_JustSayThanks`,'
SET `emailSent` = `emailSent_In`,
`emailTransport` = ',`emailTransport_In`,',
`emailSentDate` = NOW()
WHERE `formSecret` = ', `formSecret_In`, '');
PREPARE `stmt` FROM @`query`;
EXECUTE `stmt`;
@`query` := NULL;
DEALLOCATE PREPARE `stmt`;
END//
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
仅供参考,我使用的是基于wchiquito先前提供的答案的CONCAT,并将最终传入表名。但是,我想先简化一下它,然后再去那里。