Cosa c'è di sbagliato in questa definizione di procedura MySQL 5.6? Utilizzare una variabile per il nome della tabella [chiuso

dba.stackexchange https://dba.stackexchange.com/questions/59115

Domanda

Non riesci a capire perché sta lanciando questo errore?

Codice di errore: 1064. Hai un errore nella sintassi SQL; Controlla il manuale che corrisponde alla versione del server MySQL per la sintassi giusta da utilizzare vicino a "null" alla riga 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');

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top