SSIS – Operadores Condicionais (IF-THEN-ELSE)

Um recurso muito importante para qualquer desenvolvimento que envolva lógica é a utilização dos condicionais (case, IF, else). Hoje iremos ver como aplicar este tipo de lógica através do integration services.

Primeiro iremos criar uma procedure, que irá retornar uma valor aleatório entre 1 e 4. O retorno desta proc será utilizado para uma tomada de decisão em nossa dtsx.

Crie uma procedure com o seguinte código:


CREATE PROCEDURE DBO.usp_numeroAleatorio(

@retorno tinyint output)

AS BEGIN

DECLARE @NUMERO AS TABLE (NUMERO TINYINT)

INSERT INTO @NUMERO

VALUES (1),(2),(3),(4)

set @retorno = (select  TOP 1 NUMERO FROM @NUMERO ORDER BY NEWID())

END --BEGIN

Agora abra seu Microsoft Visual Studio e crie um novo projeto de integration services em um diretório de sua preferência.

A primeira coisa será criar uma nova conexão com sua base de dados. Clique com o botão direito do mouse na área “Connection Manager” e vá em “New OLE DB Connection” e aponte para o banco de dados onde você criou nossa procedure.

1

Feito isso, vamos criar uma variável que irá armazenar o retorno da nossa procedure. Caso sua aba de variáveis não esteja visível você poderá ir até o menu SSIS > Variables e habilita-la.

Clique em “add new variable” e nomeie-a como “retornoProc” do tipo Int32.

2

Agora adicione um componente “Execute SQL Task” e dê dois cliques sobre ele.

3

Altere a propriedade connection para a conexão que criamos a pouco, a propriedade “resultset” para “sigle row” e o SQL Statement para “


DECLARE @RETORNO int

EXEC usp_numeroAleatorio @RETORNO = @RETORNO OUTPUT

select @retorno as retornoproc

vá até a opção “resultset” e adicione um novo resultSet e na propriedade ResultName coloque “retornoproc” (este nome foi atribuído no retorno da variável contida na SQL Task ).

Image

Vamos adicionar agora 5 componentes script task, todos eles deverão estar configurados da mesma forma:

Image

E com o seguinte código aplicado:

</pre>
public void Main()

{

try

{

MessageBox.Show(Dts.Variables["retornoProc"].Value.ToString());

Dts.TaskResult = (int)ScriptResults.Success;

}

catch (Exception)

{

Dts.TaskResult = (int)ScriptResults.Failure;

throw;

}

}
<pre> 

Obs: este código apenas serve para exibir o valor atual da nossa variável passada como parâmetro de entrada (ReadOnlyVariables)

Faça a ligação entre nosso SQL Task e cada um dos Scripts Task. Agora sim faremos a validação propriamente dita. Dê dois cliques na precedence constraint e altere a propriedade “Evaluation Operation” para “Expression” e na propriedade expression você deverá preencher com o valor adequado a cata possibilidade de retorno da proc.

Image

Em sua tela deverá havel algo parecido com isso agora:

Image

Vamos fazer um teste? Execute a DTS e veja o resultado:

Image

Mais uma vez:

Image

Espero que a dica tenha sido útil.

Abraços.

Dhiego Piroto

BLOG DO ZOUZA

"Lifelong Learner" - Compartilhando e Adquirindo Conhecimentos!

Blog - Thiago Carlos de Alencar

Aprendendo SQL Server !

SQL Authority with Pinal Dave

SQL Server Performance Tuning Expert

Vitor Fava

Let s Learn, Practice and Share some knowledge

Diego Nogare

DBCC DumpMemory 'TECH','ALL'

Gustavo Maia Aguiar

Artigos, dicas e algumas reflexões sobre o SQL Server

Kimberly L. Tripp

DBCC DumpMemory 'TECH','ALL'

Thiago Zavaschi R2

www.zavaschi.com

Blog do Luti

DBCC DumpMemory 'TECH','ALL'

Luan.Moreno a.k.a [SQL.Soul]

Lead Database Consultant at Pythian

Blog do Leka

let's make things better