无法重新打开临时表

时间:2015-04-08 15:01:26

标签: mysql stored-functions

当我调用MySQL函数时:'modulo_usuario_verificar_usuario_subset_usuario'为

SELECT id FROM usuario WHERE modulo_usuario_verificar_usuario_subset_usuario(3, id);

MySQL抱怨:

ERROR 1137 (HY000): Can't reopen table: 'temp_modulo_usuario_obter_organizacoes_usuario'

'modulo_usuario_verificar_usuario_subset_usuario'功能是这样的:

FUNCTION `modulo_usuario_verificar_usuario_subset_usuario`( in_super_usuario int unsigned, in_sub_usuario int unsigned)
RETURNS int(11)
DETERMINISTIC
BEGIN
.....some code here ....

//This SP drops, creates, and populates the temporary table:temp_modulo_usuario_obter_organizacoes_usuario
call modulo_usuario_obter_organizacoes_usuario_c(in_super_usuario);

//Using the temporary table previously created
return (select not exists ( select *
                    from sub_set 
                    where sub_set.org_id not in (   select super_set.org_id
                                                    from temp_modulo_usuario_obter_organizacoes_usuario as super_set)) as super_usuario);

END

我在哪里重复使用临时表?我理解在函数内部使用一次,在调用函数的select子句中,函数创建一个新的临时表

编辑:我刚刚找到了一个很好的答案,为什么我无法这样做:

Calling a procedure inside a function throws MySQL ERROR 1422

1 个答案:

答案 0 :(得分:0)

您处于存储功能中。可能是您在调用该函数的查询中使用tmp表。或者你有CALL陈述。或者在其他一些函数调用中。