Procedure de Busca de Usuário em múltiplos schemas
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
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
Curtidas 0
Melhor post
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
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