【问题标题】:MySQL Error 1064: You have an error in your SQL syntaxMySQL 错误 1064:您的 SQL 语法有错误
【发布时间】:2020-04-30 07:40:45
【问题描述】:
    DELIMITER //
    CREATE FUNCTION fnc_credit_custstatus
    RETURNS VARCHAR(6) DETERMINISTIC
     BEGIN
     DECLARE custstatus VARCHAR(6);
     IF CustCredit>='1000',THEN SET custstatus='VIP';
     ELSEIF CustCredit<'1000',THEN SET custstatus='NONVIP';
   END IF;
   RETURN (custstatus);
   END//
   DELIMITER ;

已执行 1 个查询,0 个成功,1 个错误,0 个警告

查询:

CREATE function fnc_credit_custstatus returns varchar(6) deterministic 
begin DECLARE custstatus VARCHAR(6); if CustCredit>='1000...

错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'varchar(6) 确定性附近使用的正确语法 开始 声明 custstatus VARCHAR(6); 如果 CustCredit>=' 在第 2 行

【问题讨论】:

  • 尝试在 if 条件后重新添加逗号 IF CustCredit>='1000' THEN
  • DELIMITER // 创建函数 fnc_credit_custstatus 返回 VARCHAR(6) DETERMINISTIC BEGIN DECLARE custstatus VARCHAR(6); IF CustCredit>=1000,THEN SET custstatus='VIP'; ELSEIF CustCredit
  • 我试过了,还是错了
  • IF CustCredit>=1000,THEN SET ???你还没有删除任何逗号 endif 之后还有逗号
  • 您为什么要针对字符串测试 custcredit - custcredit 也是字符串吗? (与您的问题没有直接关系)

标签: mysql sql


【解决方案1】:

试试去掉逗号

    DELIMITER //
        CREATE FUNCTION fnc_credit_custstatus
        RETURNS VARCHAR(6) DETERMINISTIC
         BEGIN
         DECLARE custstatus VARCHAR(6);
         IF CustCredit>=1000 THEN SET custstatus='VIP';
         ELSEIF CustCredit<1000 THEN SET custstatus='NONVIP';
       END IF;
       RETURN (custstatus);
       END//
       DELIMITER ;

(并使用适当的比较数据类型)

【讨论】:

  • 没有显示我的Error,为什么没有显示我创建FUNCTION成功?
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2016-01-24
  • 2017-07-13
相关资源
最近更新 更多