MySQL-如何测试用户变量并在DROP VIEW中使用它

我是MySQL用户变量的新手,尝试将其用于SELECT语句以外的其他操作时遇到了一些错误。我正在尝试运行批处理作业以删除在数据库中创建的临时视图。该过程是:

步骤1:识别临时视图并将列表放入变量中。

步骤2:测试变量以查看其是否为空

步骤3:删除视图

问题1:即使我不测试null,删除操作也不起作用。我收到此消息:第13行的错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的'@VIEWLIST_PRE'附近使用

问题2:如果包含null测试,则该测试不起作用。我收到此错误:mysql:[警告]在命令行界面上使用密码可能不安全。第12行的错误1064(42000):您的SQL语法有错误;在第1行的'IF(@VIEWLIST_PRE IS NULL)THEN DROP VIEW @VIEWLIST_PRE'附近使用与您的MySQL服务器版本对应的手册,以获取正确的语法,以在'IF(@VIEWLIST_PRE IS NULL)附近使用

下面是代码。必须如何编写才能起作用?我非常感谢您的帮助!谢谢!!

SET SESSION group_concat_max_len = 18446744073709551615;

-- Get the PreSummary views
SET @VIEWLIST_PRE = (SELECT
                    CONCAT(
                        GROUP_CONCAT(TABLE_NAME)
                    ) AS stmt
                    FROM information_schema.TABLES
                    WHERE TABLE_SCHEMA = "raptor" AND TABLE_NAME LIKE "%Pre%");

SELECT @VIEWLIST_PRE; -- THIS WORKS!
IF(@VIEWLIST_PRE IS NULL) THEN  -- BREAKS
    DROP VIEW @VIEWLIST_PRE;  -- BREAKS
END IF;

*解决方案*

我调整了Used_By_Already的解决方案(根据我的收集,一次只能在一条准备好的语句中执行一个命令)。这是批量DROP的最终代码:

SET @VIEWLIST_PRE = (SELECT
                    CONCAT(
                        GROUP_CONCAT(TABLE_NAME)
                    ) AS stmt
                    FROM information_schema.TABLES
                    WHERE TABLE_SCHEMA = "raptor" AND TABLE_NAME LIKE "%Pre%");
SET @DROP_VIEW_PRE = CONCAT('DROP VIEW IF EXISTS ', @VIEWLIST_PRE);
PREPARE stmt1 FROM @DROP_VIEW_PRE;
EXECUTE stmt1;

有人提出了一个很好的问题,即为什么不使用目标液滴。原因是它无法从PHP成功执行,但未收到错误。但是,经过大量搜索后,我发现了问题,现在可以进行有针对性的丢弃。

我调整了Used_By_Already的解决方案(根据我的收集,一次只能在一条准备好的语句中执行一个命令)。这是批量DROP的最终代码:

SET @VIEWLIST_PRE = (SELECT
                    CONCAT(
                        GROUP_CONCAT(TABLE_NAME)
                    ) AS stmt
                    FROM information_schema.TABLES
                    WHERE TABLE_SCHEMA = "raptor" AND TABLE_NAME LIKE "%Pre%");
SET @DROP_VIEW_PRE = CONCAT('DROP VIEW IF EXISTS ', @VIEWLIST_PRE);
PREPARE stmt1 FROM @DROP_VIEW_PRE;
EXECUTE stmt1;

有人提出了一个很好的问题,即为什么不使用目标液滴。原因是它没有从PHP成功执行,但是没有收到错误。但是,经过大量搜索后,我发现了问题,现在可以进行有针对性的丢弃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从mysql提取数据并在javascript中使用它们

如何为会话创建全局变量并在测试用例中使用它(RobotFramework、REST API)

如何求和并在mysql的每一行中使用它

获取数组元素并在php中的mysql查询中使用它

如何使用一个mysql查询的结果并在php中的另一个查询中使用它?

如何使用mysql_db获取html属性的值以在flask中使用它

如何将选择查询设置为变量并在mysql中的另一个选择查询中使用它

TIMESTAMPDIFF-如何在PHP / MySQL中使用它来计算日期值之间的差异

如何动态计算变量的值并在命令中使用它?

如何使用pytest固定装置并在每个测试用例之间共享变量

MySQL从数据库中提取一个数字,并在同一查询中使用它

如何在Mysql If子句中使用用户变量?

检查NaN并在If中使用它

用户输入数字列表并在Python函数中使用它

获取对象的类类型并在变量声明中使用它

从bash导出变量并在Python中使用它

解析 curl 对变量的响应并在 curl 中使用它

在JSP中设置变量并在jquery中使用它

任务中的Ansible注册变量,并在模板中使用它

关联变量并在if语句外壳脚本中使用它

声明一个变量并在html中使用它

存储变量并在整个域中使用它

批量声明变量并在一行中使用它

从类名中获取数字并在变量中使用它

如何使用未来的列表并在 listView 中使用它

在私有Java变量中使用它

转义Javascript中的特殊字符以在MySql中使用它们

如何在JavaScript中使用它?

我如何在jQuery中使用它