Tipos de dados do Integration Services em expressões
O avaliador de expressão usa tipos de dados Integration Services. Quando dados são inseridos pela primeira vez em um fluxo de dados em um pacote Integration Services, o mecanismo de fluxo de dados converte todos os dados de coluna para um tipo de dados do Integration Services, e os dados da coluna que uma expressão usa já têm um tipo de dados do Integration Services. As expressões usadas nas transformações Divisão Condicional e Coluna Derivada podem fazer referência a colunas porque elas fazem parte de um fluxo de dados que inclui dados de coluna.
Expressões também podem usar variáveis. As variáveis têm um tipo de dados Variant e o avaliador de expressão converte o tipo de dados de uma variável a partir do subtipo Variant para um tipo de dados do Integration Services antes de avaliar a expressão. As variáveis podem usar só um subconjunto dos tipos de dados do Integration Services. Por exemplo, uma variável não pode usar um tipo de dados BLOB (Bloco do objeto binário grande).
Para obter mais informações sobre tipos de dados do Integration Services e o mapeamento de tipos de dados Variant para tipos de dados do Integration Services, consulte Tipos de dados do Integration Services.
Além disso, expressões podem incluir literais de cadeia de caracteres, Booleanos e numéricos. O avaliador de expressão sempre converte os literais de cadeia de caracteres para o tipo de dados DT_WSTR e converte os literais Booleanos para o tipo de dados DT_BOOL. O avaliador de expressão interpreta todos os valores incluídos entre aspa como cadeias de caracteres. Os literais numéricos são convertidos para um dos tipos de dados do Integration Services numéricos. Para obter mais informações sobre como converter literais numéricos para tipos de dados do Integration Services, consulte Literais (SSIS).
Observação |
---|
Valores Booleanos são valores lógicos, não números. Embora os valores Booleanos possam ser exibidos como números em alguns ambientes, eles não são armazenados como números, e várias linguagens de programação representam valores Booleanos como valores numéricos de modos diferentes, como faz os métodos do .NET Framework. Por exemplo, as funções de conversão disponíveis no Visual Basic convertem True para -1; no entanto, o método System.Convert.ToInt32 no .NET Framework converte True para +1. A Linguagem de expressão do Integration Services converte True para -1. Para evitar erros ou resultados inesperados, você não deve gravar códigos que contem com valores numéricos específicos para True e False. Onde for possível, você deve restringir o uso de variáveis Booleanas a valores lógicos para os quais elas são projetados. |
Requisitos para obter dados usados em expressões
O avaliador de expressão aceita todos os tipos de dados de Integration Services. Porém, dependendo da operação ou da função, os operandos e os argumentos requerem certos tipos de dados. O avaliador de expressão impõe os seguintes requisitos de tipo de dados em dados usados em expressões:
Operandos usados em operações lógicas devem ser avaliados como um Booleano. Por exemplo, ColumnA > 1&&ColumnB < 2.
Operandos usados em operações matemáticas devem ser avaliados como um valor numérico. Por exemplo, 23.75 * 4.
Operandos usados em operações de comparação, como operações lógicas e de igualdade, devem ser avaliados como tipos de dados compatíveis.
Por exemplo, uma das expressões no exemplo a seguir usa o tipo de dados de DT_DBTIMESTAMPOFFSET:
(DT_DBTIMESTAMPOFFSET,3) "1999-10-11 20:34:52.123 -3:30" != (DT_DBDATE)"1999-10-12"
O sistema converte a expressão, (DT_DBDATE)"1999-10-12", para DT_DBTIMESTAMPOFFSET. O exemplo é avaliado como TRUE porque a expressão convertida se torna "1999-10-12 00:00:00.000 +00:00", que não é igual ao valor de outra expressão, (DT_DBTIMESTAMPOFFSET,3) "1999-10-11 20:34:52.123 -3:30".
Argumentos passados para as funções matemáticas devem ser avaliados como um tipo de dados numérico. Dependendo da função ou operação, um tipo de dados numérico específico pode ser exigido. Por exemplo, a função HEX requer um inteiro assinado ou não assinado.
Argumentos passados para funções da cadeia de caracteres devem ser avaliados como a um tipo de dados de caractere: DT_STR ou DT_WSTR. Por exemplo, UPPER ("flor"). Algumas funções da cadeia de caracteres, como SUBSTRING, requerer argumentos inteiros adicionais para a posição inicial e o comprimento da cadeia de caracteres.
Argumentos passados para as funções de data e hora devem ser avaliados como uma data válida. Por exemplo, DAY(GETDATE()). Algumas funções, como DATEADD, exigem um argumento inteiro adicional para o número de dias que a função adiciona a uma data.
As operações que combinam um inteiro de oito bytes não assinado e um inteiro assinado exigem uma conversão explícita para esclarecer o formato do resultado. Para obter mais informações, consulte Cast (SSIS).
Resultados de muitas operações e funções predeterminaram tipos de dados. Esse pode ser o tipo de dados do argumento ou o tipo de dados para o qual o avaliador de expressão converte o resultado. Por exemplo, o resultado de um operador OR lógico (||) é sempre um Booleano, o resultado da função ABS é o tipo de dados numérico do argumento, e o resultado da multiplicação é o menor tipo de dados numérico que pode manter o resultado sem perda. Para obter mais informações sobre tipos de dados de resultado, consulte Operadores (SSIS) e Funções (SSIS).