我正在尝试创建一个存储过程,但我不知道是什么问题,SQLyog不断给我错误
DELIMITER //
CREATE PROCEDURE sim_management_update()
BEGIN
UPDATE bf_sim_management,test_sims SET
bf_sim_management.`sim_company_id`=test_sims.`id` WHERE
bf_sim_management.`sim_company_id`=test_sims.`display_name`
END //
DELIMITER;
单独的更新语句工作正常,错误是
查询:CREATE PROCEDURE sim_management_update()BEGIN UPDATE bf_sim_management,test_sims SET bf_sim_management。sim_company_id
= test_si ...
错误代码:1064 您的SQL语法有错误;检查与MariaDB服务器版本对应的手册,以便在第4行的“END”附近使用正确的语法
执行时间:0秒 转移时间:0秒 总时间:0秒
答案 0 :(得分:1)
代码实际上看起来不错,但我建议将其编写为:
DELIMITER //
CREATE PROCEDURE sim_management_update()
BEGIN
UPDATE bf_sim_management sm JOIN
test_sims ts
ON sm.sim_company_id = ts.display_name
SET sm.sim_company_id = ts.id;
END //
DELIMITER ;
注意:
SET
看起来很奇怪,因为我认为name
是一个字符串而id
是一个数字。通常,数字不会分配给字符串。JOIN
语法。update
。答案 1 :(得分:1)
你应该:
DELIMITER
和;
以下是修复的例子:
DELIMITER //
CREATE PROCEDURE sim_management_update()
BEGIN
UPDATE bf_sim_management,test_sims SET
bf_sim_management.`sim_company_id`=test_sims.`id` WHERE
bf_sim_management.`sim_company_id`=test_sims.`display_name`;
END //
DELIMITER ;