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

MySQL创建Costotramite自定义函数报1064语法错误

MySQL自定义函数1064语法错误修复

你代码里的语法问题共2处:

  • NO SQL是函数特性声明,语法要求必须放在RETURNS子句之后、BEGIN关键字之前,不能写在BEGIN块内部。
  • BEGIN块内所有DECLARE变量声明语句必须集中放在块的最开头,不能在SET这类执行语句之后再写DECLARE声明,你的代码在SET porcentaje = 0.1之后才声明CostoLicitacion,违反了该语法规则。

另外如果用MySQL命令行或普通客户端执行函数创建语句,需要先临时修改分隔符,避免客户端读到块内的分号就提前截断语句导致报错。

修复后的可执行代码

-- 临时修改分隔符为//,避免块内分号触发提前执行
DELIMITER //
CREATE FUNCTION `Costotramite` (monto INT)
    RETURNS INTEGER
    NO SQL
    BEGIN
        -- 所有变量声明统一放在块最开头
        DECLARE porcentaje FLOAT;
        DECLARE CostoLicitacion INTEGER;
        -- 声明完成后再写赋值、计算逻辑
        SET porcentaje = 0.1;
        SET CostoLicitacion = monto * porcentaje;
        RETURN CostoLicitacion;
    END //
-- 恢复默认分隔符为分号
DELIMITER ;

简化版写法

你的函数逻辑不需要声明多余中间变量,可以直接返回计算结果,代码更简洁:

DELIMITER //
CREATE FUNCTION `Costotramite` (monto INT)
    RETURNS INTEGER
    NO SQL
    BEGIN
        RETURN monto * 0.1;
    END //
DELIMITER ;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:45:40