当我调用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
答案 0 :(得分:0)
您处于存储功能中。可能是您在调用该函数的查询中使用tmp表。或者你有CALL
陈述。或者在其他一些函数调用中。