Usuário com melhor resposta
Utilizando Variavel no Execute SQL Task

Pergunta
-
Bom Dia Galera,
estou com um problema, se possível vocês me ajuderem, e dizerem se é realmente possível ou não.
Estou executando um SQL, com algumas variaveis, passo valores em algumas variaveis Declaradas no proprio SQL, pois usaria o mesmos filtros várias vezes.
Porém minhas Datas: Iniciais e Finais, gostaria de passar apartir de variaveis do proprio SSIS.
Estou executando o SQL em um Execute SQL Task e gostaria de saber se é possível de passar parametros na sintaxe SET do sql..
Exemplo:SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
DECLARE @dDataInicial DATETIMEDECLARE @dDataFinal DATETIME
SET @dDataInicial = ?
SET @dDataFinal = ?
Onde os " ? " seria o paramentro que receberia minha variavel do SSIS.
Porém tendei de diversas maneiras e não consigo, cada hora um erro diferente, algumas vezes diz, que o DBTIME, ou DBTIMESTAMP, ( Formatos das Datas que eu atribui para variavel não estão corretos) ou diz que está com erro no Result.
Enfim, apenas consegui passar a variavel no meu WHERE, porém como vou utilizar a mesma variavel varias vezes, preciaria utilizar no SET, para que eu possa utilizar o mesmo valor nas outras partes do select.
Enfim, a pergunta: È Possível?, ou Existe outra Maneira?
Aguardo Ajuda de Vocês.
Att.
M.R.C.
Respostas
-
MRC,
Boa pergunta.
Utilizando no where você esta conseguindo isso já representa algumas possiblidades de utilização.
Agora na diretiva SET você não esta conseguindo por questões de compatibilidade dos dados!!!
Já tentou fazer algum tipo de conversão destes valores!!!
-
Ae galera, Consegui...
Baseado no que o Junior disse sobre a incompatibilidade dos dados, eu comecei a mecher em todos os tipos de valores que existiam datas, e Consegui!!
Quando eu crio a variavel, no SSIS no pacote, eu crio ela como Datetime, no meu SQL também utilizei como Datetime, Meu erro estava no Parameter Mapping do Execute SQL Task, onde no Data Type, eu estava colocando DBTIME, e o Correto é DATE
Trocando isso, funcionou corretamente!!
Valeu a força ai Junior!
Abraços!
Att.
M.R.C
Todas as Respostas
-
MRC,
Boa pergunta.
Utilizando no where você esta conseguindo isso já representa algumas possiblidades de utilização.
Agora na diretiva SET você não esta conseguindo por questões de compatibilidade dos dados!!!
Já tentou fazer algum tipo de conversão destes valores!!!
-
Fala Junior, Blz?
Então, não estou utilizando conversão, pois no SQL já declaro minha váriavel como Datetime, e a váriavel que crio no SSIS tb é Datetime, justamente para não dar problema.
Você acha que ainda assim deveria utilizar conversão?.. no Caso Onde?
Att.
M.R.C
-
MRC,
Se você esta utilizando datatype iguais e os dados estão sendo passados no mesmo formato deveria funcionar!!!
Mas em último caso vamos fazer uma conversão dos dados que será passados para o SSIS, ou seja, o valor que o SQL Server vai enviar para o pacote você poderia fazer a conversão.
-
Ae galera, Consegui...
Baseado no que o Junior disse sobre a incompatibilidade dos dados, eu comecei a mecher em todos os tipos de valores que existiam datas, e Consegui!!
Quando eu crio a variavel, no SSIS no pacote, eu crio ela como Datetime, no meu SQL também utilizei como Datetime, Meu erro estava no Parameter Mapping do Execute SQL Task, onde no Data Type, eu estava colocando DBTIME, e o Correto é DATE
Trocando isso, funcionou corretamente!!
Valeu a força ai Junior!
Abraços!
Att.
M.R.C
-