gpt4 book ai didi

带有游标和 View 的 MySQL 递归存储过程不刷新

转载 作者:行者123 更新时间:2023-11-29 03:40:31 24 4
gpt4 key购买 nike

我有一个可以递归调用自身的有效 MySQL 5.5 存储过程。

我需要执行一个对每次调用都是唯一的动态 sql 查询,然后遍历查询中的所有值。为此,我声明了一个基于 View 的游标,并在打开游标之前使用动态 SQL 创建了一个 View 。我快速遍历游标,将一些信息捕获到伪数组变量中,然后关闭游标并放下 View 。然后我处理在我的数组中捕获的信息,其中可能包括对同一存储过程的递归调用。

我遇到的问题是,尽管每次调用过程时都会创建和删除 View ,但 View 定义似乎在第一次递归调用后卡住了(即 View 在初始创建好的调用,它在第一次递归调用中创建正常,但第二次递归调用中的 View 与第一次递归调用中的相同,即使创建 View 的 SQL 不同。)

View 的名称在每次创建时都是相同的(在 MySQL 中模拟动态 SQL 游标的一部分),看起来好像 View 定义被缓存在某个地方并在它正在被“复活”时已创建,即使 CREATE VIEW 语句每次都不同。

我知道 View 正在按预期创建和删除,因为有代码可以防止同时用户无意中使用相同的公共(public) View - 即如果 View 已经存在则检查并延迟执行(另一个 MySQL 缺少私有(private) View 的问题).

我已经能够解决 MySQL 的所有其他缺点,但这个缺点让我感到难过。在此先感谢您的任何见解/帮助!

迈克

最佳答案

这似乎与事务隔离有关——您是在事务中执行此操作,您是否在删除后提交,您是否启用了自动提交,等等...?

关于带有游标和 View 的 MySQL 递归存储过程不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com