Quel est le problème avec cette définition de la procédure MySQL 5.6? Utilisez une variable pour le nom de la table [fermé
-
02-11-2019 - |
Question
Vous ne comprendrez pas pourquoi il lance cette erreur?
Code d'erreur: 1064. Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version MySQL Server pour que la syntaxe de droite puisse utiliser près de «null» à la ligne 1
drop procedure if exists dividir_tabla_por_usuario;
delimiter //
create procedure dividir_tabla_por_usuario(tabla varchar(100), columna_usuario varchar(100), columna_fecha varchar(100))
begin
set @i = 0;
set @q1 = concat('select count(*) from (select distinct ', columna_usuario ,' from ', tabla , ' order by ', columna_usuario ,' asc) as t1 into @c');
prepare p1 from @q;
execute p1;
while @i <= @c do
set @r = 0;
set @q2 = concat('select * from ', tabla , ' where ', columna_usuario ,' = (select ', columna_usuario ,' from (select @r:=@r +1 as ord, ', columna_usuario ,' from (select distinct ', columna_usuario ,' from ', tabla , 'order by ', columna_usuario ,' asc) as t2) as t3 where ord = ', @i ,' ) order by ', columna_fecha ,' asc limit 30000');
prepare p2 from @q2;
execute p2;
set @i := @i + 1;
end while;
end//
delimiter ;
call dividir_tabla_por_usuario('mytable', 'mycolumn_1', 'mycolumn_2');
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange