Alterar o Schema do Banco dinamicamente em tempo de execução

Olá pessoal eu estava com uma duvida e não achei nenhuma resposta aqui no forum, mas consegui resolver então vou compartilhar a informação caso alguem necessite.

Cenario:
Tenho uma aplicação ERP que possui mais de um schema no banco por exemplo um schema “public” e outro schema “filial” pois a empresa em que trabalho utiliza o mesmo software para duas empresas.
Então os schemas “public” e “filial” tem a mesma estrutura.
Então eu precisava criar uma aplicação onde eu pudesse escolher o schema em tempo de execução, mais precisamente no login da aplicação.

Solução:
Em minha aplicação de login:
Criei um CAMPO com nome “base” do tipo “Select”
Adicione os nomes dos schemas em Lookup de Edição no método para lookup “Manual”
Label: Public - Valor: public
Label: Filial - Valor: filial

E no evento “onValidate” criei uma variavel global recebendo o valor do campo “base”
[basededados] = {base}

Configurei nas Variaveis Globais a variavel Global [basededados] como Escopo “SESSION” do tipo “Saida”.

Na aplicação de consulta:

Em SQL:
No Comando SQL crei o comando assim:
SELECT campo1, campo2 FROM base.nome_da_tabela

Nesta mesma tela mais abaixo tem a opção “Variável para Tabela” com dois campos.
O primeiro campo preencha com o nome da variavel gloval sem cochetes [].
basededados

O segundo campo preencha com a parte do SQL que vai ser substituida com o schema escolhido.
base

Pronto! Agora é só logar escolhendo o schema que voce quer acessar e sua aplicação vai buscar os dados no schema selecionado.

Espero ajudar alguem que tenha essa duvida…Abraços

1 Curtida

Com certeza me ajudou muito.
Valeu!