Iandev Smarter Business - Logo Cor
Navegação no fórum
para criar postagens e tópicos.

União (Union) entre Bancos Diferentes

[quote][b]União (Union) entre Bancos Diferentes[/b]
[/quote]
Algumas vezes você tem algumas informações em um banco e outras informações em outro banco e precisa unir as informações.
Ex. Possui um cadastro de vendedores no banco do ERP e o cadastro de metas em um banco a parte.

Para unir, você precisará de um Datalist (do sql 'principal') e um sql do sql ('secundário').

Ex:
[code]
[i]connect[/i] banco1;
[i]sql[/i]
Select
nomevendedor
,codigovendedor
,0 as valormeta
From
vendedores
[i]sql_var(datalist)[/i]
;

[i]connect[/i] banco2;
[i]sql[/i]
Select
meta
From
metavendedores
Where
codigo = {codigovendedor}
sql_var(sql) no_exec
;
[/code]

No código acima, temos dois sqls..
porém só o principal roda para gerar o datalist.
o segundo não executa e possui algo em especial, o {codigovendedor}, ele é um comando especial que depois será usado como chave de ligação entre os dois sqls, o comando é o seguinte:

[code]set run = bdo.util.DataListUtil.joinSQLWithVars(execScript.getDataList("datalist"), "valormeta", "$v{sql}", execScript.getConnection("banco2"));[/code]

Esse comando pega cada linha do [i]datalist[/i] e executa o [i]sql[/i] buscando combinar o [i]codigo [/i]do sql com o [i]codigovendedor[/i] do datalist.

Agora explicarei para que serve cada parametro:
[*][b]datalist:[/b] é o datalist em si, que será usado de base
[*][b]valormeta:[/b] é onde o resultado do sql será inserido no datalist (Pode ser mais de um, o comando irá jogar na ordem que estão os parametros do sql)
[*][b]$v{sql}:[/b] é o sql que será rodado uma vez para cada linha do datalist.