MySQL - concatenar para realizar un procedimiento

 
Vista:
Imágen de perfil de statham
Val: 86
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

concatenar para realizar un procedimiento

Publicado por statham (34 intervenciones) el 18/06/2019 12:05:38
Buenas gente, estoy buscando la manera de concatenar palabras para poder realizar un procedimiento con consultas y evitar que sea repetitivo.

Por ejemplo:

1
2
3
4
5
6
7
8
delimiter //
CREATE PROCEDURE prueba( IN id2 BIGINT(20), IN entorno VARCHAR(10) )
BEGIN
 
select * from concat(entorno, '.prueba') where id_prueba like id2;
 
END //
delimiter ;

Para empezar no se si el paramentro entorno debe ser un varchar o un string.
Lo que busco es ralizar un select * from bbdd1.prueba, bbdd1 llegaria como parametro.
Es posible hacerlo de algun modo?


Al igual que al reves, es decir:

1
2
3
4
5
6
7
8
delimiter //
CREATE PROCEDURE prueba( IN id2 BIGINT(20), IN pp VARCHAR(10) )
BEGIN
 
select * from concat('bbdd1.', pp) where id_prueba like id2;
 
END //
delimiter ;

En pp iria prueba dando lugar a un select * from bbdd1.prueba.
Puede que sea creando una variable ya que en la propia consulta no vale?

Un saludo.

edit 1: Esto tiene mejor pinta pero al ejecutar el procedimiento me dice que no existe tabla.id_prueba

1
2
3
4
5
6
7
8
9
delimiter //
CREATE PROCEDURE prueba( IN id2 BIGINT(20), IN entorno VARCHAR(20) )
BEGIN
 
 
select * from (SELECT CONCAT(entorno,".prueba") ) as tabla where tabla.id_prueba like id2;
 
END //
delimiter ;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de statham
Val: 86
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

concatenar para realizar un procedimiento

Publicado por statham (34 intervenciones) el 18/06/2019 12:52:38
solucionado, un ejemplo;

1
2
3
4
5
6
7
8
9
10
11
12
delimiter //
CREATE PROCEDURE prueba(IN id2 BIGINT(20),IN entorno VARCHAR(20) )
BEGIN
 
 
set @smt = concat("select * from ", entorno,".prueba", " where id_prueba =",id2, ";");
 
prepare smt2 from @smt;
execute smt2;
 
END //
delimiter ;



call prueba("69","bbdd1");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar