Procedure de Busca de Usuário em múltiplos schemas

MySQL

Banco de Dados

26/03/2019

Boa tarde!

No meu banco de dados, os clientes estão separados por schemas e as estruturas das tabelas são idênticas.
Criei uma procedure cujo intuito é localizar usuário X de determinado schema, mas ainda está faltando algo.
Criei da seguinte forma:

DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `sp_busca_user`(base varchar(20),login varchar(50))
BEGIN

set @base:= base;
set @login:= login;

if exists (select distinct TABLE_SCHEMA as base from information_schema.COLUMNS where TABLE_NAME = 'tuser') = @base then
select * from base.tuser where login = @login ;
else select 'Usuario nao localizado';
end if;
END

Só me retorna "Usuario nao localizado".
Alguém poderia me dar uma força?
Desde já agradeço.
[]'s
Bruno Oliveira

Bruno Oliveira

Curtidas 0

Melhor post

Bruno Oliveira

Bruno Oliveira

27/03/2019

Olá!

Consegui resolver, após mais algumas buscas na net, através dum prepare statement.


CREATE DEFINER=`root`@`%` PROCEDURE `sp_busca_user`(in _base varchar(20),in _login varchar(50),in _email varchar(100))
BEGIN

set @base = _base;
set @login = _login;
set @email = _email;


set @stmt = CONCAT('select * from ',@base,'.tuser where login = ','''',@login,'''','and email = ','''',@email,'''',';');

PREPARE busca_user from @stmt;
EXECUTE busca_user ;
DEALLOCATE PREPARE busca_user;
END

Abs
GOSTEI 1
POSTAR