Mysql 存储函数中的临时表?

Mysql 存储函数中的临时表?,mysql,stored-functions,Mysql,Stored Functions,我正在编写一个函数,需要使用表变量或临时表 然而,临时表似乎只在存储过程中工作,而不是在函数中工作。我不断地发现这个错误: 存储函数或中不允许显式或隐式提交 扳机 我试图构建的是一个解决方案。它是一个接收开始日期、结束日期和逗号删除字符串的函数。它首先查找开始日期和结束日期之间的所有月份,并将它们作为单个记录保存在第一个临时表中。然后,它解析出逗号删除字符串,并将其保存到第二个临时表中。然后它对这两个数据执行select连接,如果存在记录,则返回true,否则返回false 我的意图是将其用作另

我正在编写一个函数,需要使用表变量或临时表

然而,临时表似乎只在存储过程中工作,而不是在函数中工作。我不断地发现这个错误:

存储函数或中不允许显式或隐式提交 扳机

我试图构建的是一个解决方案。它是一个接收开始日期、结束日期和逗号删除字符串的函数。它首先查找开始日期和结束日期之间的所有月份,并将它们作为单个记录保存在第一个临时表中。然后,它解析出逗号删除字符串,并将其保存到第二个临时表中。然后它对这两个数据执行select连接,如果存在记录,则返回true,否则返回false

我的意图是将其用作另一个查询WHERE子句的一部分,因此它需要是一个函数,而不是一个存储过程

如何在存储函数中使用临时表?如果我不能,我能做什么

以下是我当前中断的函数或作为:


drop table语句导致隐式提交,这在mysql函数中是不允许的。但删除临时表不会导致提交。如果您不担心两个日期之间名为months\u的常规非临时表或筛选现有的months\u表,您应该能够进行更改

DROP TABLE IF EXISTS months_between_dates;
DROP TABLE IF EXISTS filter_months;

DROP TABLE IF EXISTS months_between_dates;
DROP TABLE IF EXISTS filter_months;
DROP TEMPORARY TABLE IF EXISTS months_between_dates;
DROP TEMPORARY TABLE IF EXISTS filter_months;