SSIS 2012 – Usando Variáveis como saída e entrada – (Result Set)

Oi pessoal!

Então tive uma demanda no trabalho para consumo de um web service. A demanda foi um pouco difícil, por tanto, vou tentar ser o mais simples possível.

Breve História

O pessoal da parte de programação fez um código C# em uma Script Task para consumir os dados do Web Service. O Script Task se comunicava com o WS, porém não tinhamos uma forma de retornar os dados como uma saída. Surgiu a idéia de gerar um arquivo xml, a partir de variáveis do Integration, sendo colocado dentro do código C#. Foi criado várias variáveis. Como na figura abaixo.

variable

No Script Task configurei na parte ReadOnlyVariables e ReadWriteVariables, as variáveis que seriam utilizadas dentro do código C#, de forma dinâmica, sem a necessidade de alteração no código.

Scrip task

No código C#, depois de pesquisar muito, coloquei as variáveis como entrada e saída dentro do código.

Scrip código

Maravilha! Agora eu conseguia importar os dados na data e o ID que eu desejava através de variáveis.

Usando Variáveis com  Execute SQL Task (Parameter Mapping) –Inserção em uma tabela

Inserindo dados de uma variável em uma tabela (Passo a passo):

Passo 01 (Arraste a task e configure a conexão)

passo 01

Passo 02 (Clique em Parameter Mapping, clique em Add e adicione as variáveis que deseja. Sete para varchar o tipo e em Parameter Name coloque a ordem que as variáveis terão dentro do código T-SQL). No exemplo abaixo o código receberá primeiro a vAno e em seguida a vMes.

passo 02


DECLARE @tempo_mes table (mes char(02))
DECLARE @tempo_ano table (ano char(04))
DECLARE @mes char(02),@ano char(04)

/*Pega a variável  [User::vAno] - Parameter Name = 0,
o ponto de interrogação corresponde a variável dentro do código t-sql*/

insert into @tempo_ano (ano) values (?)

/*Pega a variável [User::vMes] - Parameter Name = 1,
o ponto de interrogação corresponde a variável dentro do código t-sql*/

insert into @tempo_mes (mes) values (?)

SET @mes = (SELECT * FROM @tempo_mes )
SET @ano = (SELECT * FROM @tempo_ano )

INSERT INTO DB_ONS_WS.dbo.TAB_TEMPO

SELECT @MES AS MES, @ANO AS ANO

 

Passo 03 (Clique em SQL Statement e Insira o código T-SQL acima e clique em OK)
passo 03

Passo 04 (Execute a task e selecione a tabela).

Usando Variáveis com  Execute SQL Task (Result Set) – Inserção de um dado de tabela em uma variável

Inserindo dados de uma tabela para uma variável (Passo a passo):

Passo 01 (Arraste a task, configure a conexão e em Result Set coloque a opção Single Row)

Passo 02 (Clique em Result Set, clique em Add, em Variable Name escolha a variável que você deseja que seja inserido o dado da tabela e em Result Name coloque o Alias (apelido) ou o nome da coluna da consulta desejada). No exemplo abaixo,a variável vAno receberá o max(ano) da tabela DB_ONS_WS.dbo.TAB_TEMPO.

Observação: É muito importante que o Result Name esteja igual ao Alias ou coluna da tabela.

passo 054

Passo 03 (Clique em SQL Statement e coloque o código abaixo).


Use DB_ONS_WS

--O Alias Ano é o meu Result Name

select max(ano) as Ano from dbo.TAB_TEMPO

Passo 06

Passo 04 (Arraste uma segunda task e Clique com o botão direito na Execute SQL Task e clique em Edit Breakpoints… e selecione a primeira opção. Depois execute o pacote, vá em Locals-> Variables e procure o resultado da variável).

Passo 07

PRINT 08

Então pessoal!

Foi um assunto um pouco longo, porém mão-na-roda. As variables facilitam e muito, as  manutenções no pacote que vierem a surgir.

Espero ter ajudado de alguma forma, pois foi muito útil para mim!

Abraços,

E que Jesus os abençoe muito!!!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s