You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建SQL存储过程时CONCAT_WS语法报错,请求技术支持

解决MySQL存储过程创建时的1064语法错误

看起来你遇到的问题其实不是CONCAT_WS的参数问题,而是存储过程定义的基础语法错误——存储过程名称后面必须加上括号(),哪怕这个过程不需要接收任何参数。MySQL的解析器因为这个语法问题,才会错误地把后续的代码识别成非法格式,进而抛出那些指向CONCAT_WS的误导性错误提示。

你原来的代码里,CREATE PROCEDURE selectContacts后面缺少了括号,这是违反MySQL存储过程定义语法的。修正后的完整代码应该是这样的:

DELIMITER $$ 
CREATE PROCEDURE selectContacts()  -- 这里补上了空括号
BEGIN 
SELECT master_id, CONCAT_WS(" ", l_name, f_name) AS display_name 
FROM master_name 
ORDER BY l_name, f_name; 
END $$  -- 注意用自定义分隔符$$结束存储过程定义
DELIMITER ;  -- 最后把分隔符恢复回默认的;

额外补充几个细节:

  • 结束存储过程定义时,一定要用你设置的自定义分隔符$$,之后记得把分隔符改回默认的;,避免后续SQL语句执行出错。
  • 你提到2个月前这个语句还能正常运行,大概率是当时的代码里包含了括号,这次编写时不小心遗漏了;或者当时使用的MySQL版本对这个语法的容错性更高,但从标准语法来说,括号是必须的。

内容的提问来源于stack exchange,提问作者ptK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:44:21