Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL过程无法使用函数,如果(exper1、exper2、exper3)_Mysql_Sql - Fatal编程技术网

Mysql SQL过程无法使用函数,如果(exper1、exper2、exper3)

Mysql SQL过程无法使用函数,如果(exper1、exper2、exper3),mysql,sql,Mysql,Sql,Mysql的版本是5.6.25。 代码运行时,将显示: [Err]1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near的正确语法$$ 第4行的分隔符' DELIMITER $$ DROP PROCEDURE IF EXISTS `TEST` $$ CREATE PROCEDURE `TEST`(IN aaa INT) BEGIN SET @abc=if(1>2,3,2); END $$ DELIMITER ; 但如果我

Mysql的版本是5.6.25。 代码运行时,将显示: [Err]1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near的正确语法$$ 第4行的分隔符'

  DELIMITER $$
  DROP PROCEDURE IF EXISTS `TEST` $$
  CREATE PROCEDURE `TEST`(IN aaa INT)
  BEGIN
    SET @abc=if(1>2,3,2);
  END $$
  DELIMITER ;
但如果我将上述两种情况分开; 他们会跑得很好

SET @abc=if(1>2,3,2);
如果我们将关键字集更改为select,它们也会运行良好

DELIMITER $$
DROP PROCEDURE IF EXISTS `TEST` $$
CREATE PROCEDURE `TEST`(IN aaa INT)
BEGIN
--     SELECT @abc=if(1>2,3,2);
END $$
DELIMITER ;
我不知道为什么,谁能告诉我?
谢谢

我无法从MySQL命令行重现该问题

mysql>使用'test'; 数据库已更改 mysql>分隔符$$ mysql>删除过程(如果存在)`TEST`$$ 查询正常,0行受影响,1条警告0.00秒 mysql>在aaa INT中创建过程“TEST” ->开始 ->设置@abc=IF1>2,3,2; ->结束$$ 查询确定,0行受影响0.00秒 mysql>分隔符; mysql>调用`TEST`NULL; 查询确定,0行受影响0.00秒 mysql>SELECT@abc; +---+ |@abc| +---+ | 2 | +---+ 设置为1行0.00秒
你是怎么管理这些的?请记住,分隔符本身不是MySQL命令;它由您使用的客户端识别,而不是由服务器识别。如果删除最后一个分隔符会发生什么情况;在第一个例子的末尾,你得到了什么?是的。您运行的代码中是否有一些奇怪的隐藏字符@windy?我认为$$和分隔符之间有一个不间断的空格可能会导致这些症状。您是从某处复制并粘贴代码,还是自己键入代码?非常感谢!昨天我在名为Navicat for MySQL的软件上播放了代码!然后我转向cmd,他们今天跑得很好!