mysql存储过程 语法报错

就是根据schedule表的时间和当前时间进行比较,然后更新order表的state值 

delimiter $$
DROP PROCEDURE IF EXISTS update_order_state
CREATE PROCEDURE update_order_state()
	BEGIN
	    UPDATE `order`,`schedule` SET order_state = 1 
            WHERE `order`.schedule_id = `schedule`.schedule_id 
            AND schedule_start_time < current_timestamp;
	END$$
delimiter;

 

报错:

> 1064 - 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 'CREATE PROCEDURE update_order_state()
    BEGIN
        UPDATE `order`,`schedule` SET o' at line 2

UPDATE 后面是表名

order 后面的应该是点好不是逗号吧,要统一风格。

你如果要达到相同效果的话,就在 UPDATE 的 WHERE 后面写子查询,然后 `order`.schedule_id in ()

这个要用子查询实现,update语句不能这样写。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

语法是没有错的,你看看你俩张表是不是都有 order_state 这个字段,平时开发在连表的时候,最好带上表别名去点属性。

示例:

UPDATE sr_record,
sr_record_business 
SET `sr_record`.cm_no = 'ZRCL_2021040600041' 
WHERE
    `sr_record`.record_id = `sr_record_business`.record_id 
    AND `sr_record_business`.record_id = '0124b2f75b49419888797fbfafe9bb1a'