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

Anúncios

Sobre dhiegopiroto
Graduando em Sistemas de Informação, apaixonado por tecnologia, literatura e musica. Possui experiencia com desenvolvimento em T-SQL, XML, XSD e administração de bancos de dados SQL Server; Detém os titulos de MCP e MCTS SQL Server 2008.

One Response to SSIS – Operadores Condicionais (IF-THEN-ELSE)

  1. Thiago says:

    Muito bom o post, me ajudou bastante

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s

Alex Souza

Banco de dados, Business Intelligence, Big Data, Governança de TI ... /* Um eterno aprendiz... */

Blog - Thiago Carlos de Alencar

Aprendendo SQL Server !

SQL Authority with Pinal Dave

SQL Server Performance Tuning Expert

Vitor Fava

SELECT (CrazyIdeas*2), (InsaneIdeas*100), MyExperience FROM MyBigHead WHERE InsaneLevel > 1000

Think Think SQL

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

%d blogueiros gostam disto: