非过程语句中的MySQL条件检查

非过程语句中的MySQL条件检查,mysql,Mysql,我想检查MySQL数据库是否存在,以及它是否向用户授予权限 SELECT Count(schema_name) FROM information_schema.schemata WHERE schema_name = 'tmx' INTO @found ;SELECT @found; -- Verified, the result is 1IF (@FOUND == 1) THEN GRANT SELECT, UPDATE ON tmx.* TO 'my_

我想检查MySQL数据库是否存在,以及它是否向用户授予权限

SELECT Count(schema_name) 
FROM   information_schema.schemata 
WHERE  schema_name = 'tmx' 
INTO   @found ;SELECT @found; -- Verified, the result is 1IF (@FOUND == 1) THEN 
  GRANT 
  SELECT, 
  UPDATE 
  ON tmx.* TO 'my_new_user'@'%';END IF;
当我执行上面的代码时,我会在IF语句中指出我的sql错误。 是否可以在存储过程之外运行IF语句? 我不喜欢使用存储过程的原因是,我希望获得尽可能最短的语法。要实现这一点,最短的命令是什么

错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在“IF(@FOUND==1)”附近使用的正确语法,然后在第1行将SELECT,UPDATE ON tmx.*授予“my_new_user”@“%”


我目前使用的是x86_64(MySQL社区服务器(GPL))上的mysqld 5.7.31 Linux版本。不,MySQL只支持存储例程中的复合语句

本节介绍BEGIN。。。END复合语句和可在存储程序体中使用的其他语句:存储过程和函数、触发器和事件

此上下文中的“其他语句”包括流控制语句,如
IF/THEN/ELSE/ENDIF


大多数需要编写条件代码的开发人员将使用一些客户端编程语言(如Java或Python)编写条件。几乎你喜欢的任何其他语言都会有一个MySQL的连接器。

令人惊讶的是,如果数据库不存在,MySQL不会抱怨,所以对于我来说,如果数据库不存在,可能就没有那么重要了,因为最终会创建不存在的数据库。
GRANT SELECT,在一些新的数据库上更新,但数据库还不存在。*到“我的新用户”@'