Sintaxis (SSIS)
La sintaxis de expresiones de Integration Services es similar a la sintaxis de los lenguajes C y C#. Las expresiones incluyen elementos como identificadores (columnas y variables), literales, operadores y funciones. En este tema se resumen los requisitos únicos de la sintaxis del evaluador de expresiones cuando se aplican a distintos elementos de una expresión.
Para ver expresiones de ejemplo que usen funciones y operadores específicos, vea el tema acerca de cada operador y función en los temas: Operadores (SSIS) y Funciones (SSIS).
Para ver expresiones de ejemplo que usen varios operadores y funciones, así como identificadores y literales, vea Expresiones avanzadas de Integration Services.
Para ver expresiones de ejemplo que se puedan usar en expresiones de propiedad, vea Usar expresiones de propiedad en paquetes.
En algunos casos, Integration Services impone un límite de 4.000 caracteres en la longitud de las expresiones. Si el resultado de la evaluación de una expresión tiene el tipo de datos DT_WSTR o DT_STR de Integration Services, la expresión se truncará a 4.000 caracteres. Si el tipo de resultado de una subexpresión es DT_STR o DT_WSTR, dicha subexpresión se truncará también a 4.000 caracteres, independientemente del tipo de resultado de la expresión general.
Los truncamientos se controlan de forma distinta en función del componente de Integration Services en el que se produzcan.
En transformaciones tales como Columna derivada y División condicional, el truncamiento puede controlarse configurando las transformaciones de modo que omitan los truncamientos o utilicen una salida de error para redirigir a una salida distinta las filas de datos en las que se produzca el truncamiento.
En tiempo de ejecución, el truncamiento de expresiones utilizado para definir valores de expresiones de propiedades, variables y limitaciones de precedencia es un error y puede dar lugar a un error en el paquete.
Durante el diseño, el truncamiento de un literal de cadena genera una advertencia si se produce en la canalización, y genera un error si se produce en tiempo de ejecución.
Identificadores
Las expresiones pueden incluir identificadores de columnas y variables. Las columnas pueden originarse en el origen de datos o crearse mediante transformaciones del flujo de datos. Las expresiones pueden usar identificadores de linaje para hacer referencia a columnas. Los identificadores de linaje son números que identifican de forma única los elementos de un paquete. Para hacer referencia a estos indicadores en una expresión, debe incluirse el prefijo #. Por ejemplo, para hacer referencia al identificador de linaje 138, debe utilizarse #138.
Las expresiones pueden incluir las variables del sistema proporcionadas por SSIS y variables personalizadas. Para hacer referencia a estas variables en una expresión, debe incluirse el prefijo @. Por ejemplo, para hacer referencia a la variable Counter, debe utilizar @Counter. El carácter @ no forma parte del nombre de la variable; sólo indica al evaluador de expresiones que el identificador es una variable. Para obtener más información, vea Identificadores (expresiones SSIS).
Literales
Las expresiones pueden incluir literales numéricos, de cadena y booleanos. Los literales de cadena usados en expresiones deben escribirse entre comillas. Los literales numéricos y booleanos no utilizan comillas. El lenguaje de expresiones incluye secuencias de escape para los caracteres que se suelen marcar con caracteres de escape. Para obtener más información, vea Literales (SSIS).
Operadores
El evaluador de expresiones proporciona un conjunto de operadores que proporciona funcionalidad similar a la de los operadores de lenguajes como Transact-SQL, C++ y C#. Sin embargo, el lenguaje de expresiones incluye operadores adicionales y utiliza símbolos distintos a los usuales. Para obtener más información, vea Operadores (SSIS).
Operador de resolución de espacio de nombres
Las expresiones usan el operador de resolución de espacio de nombres (::) para eliminar la ambigüedad de las variables que tienen el mismo nombre. Con el operador de resolución de espacio de nombres puede calificar la variable con su espacio de nombres, lo que permite usar varias variables con el mismo nombre en un paquete.
Operador de conversión
El operador de conversión convierte resultados de expresiones, valores de columna, valores de variable y constantes de un tipo de datos a otro. El operador de conversión proporcionado por el lenguaje de expresiones es similar al proporcionado por los lenguajes C y C#. En Transact-SQL, las funciones CAST y CONVERT proporcionan esta funcionalidad. La sintaxis del operador de conversión difiere de la utilizada en CAST y CONVERT en los siguientes aspectos:
Puede utilizar una expresión como un argumento.
Su sintaxis no incluye la palabra clave CAST.
Su sintaxis no incluye la palabra clave AS.
Operador condicional
El operador condicional devuelve una de dos expresiones, en función de la evaluación de una expresión booleana. El operador condicional proporcionado por el lenguaje de expresiones es similar al proporcionado por los lenguajes C y C#. En expresiones multidimensionales (MDX), la función IIF proporciona una funcionalidad similar.
Operadores lógicos
El lenguaje de expresiones admite el carácter ! para el operador lógico NOT. En Transact-SQL, el operador ! está integrado en el conjunto de operadores relacionales. Por ejemplo, Transact-SQL proporciona los operadores > y !>. El lenguaje de expresiones SSIS no admite la combinación del operador ! y otros operadores. Por ejemplo, no se permite combinar ! y > en !>. Sin embargo, el lenguaje de expresiones admite una combinación de caracteres != integrada para la comparación "distinto de".
Operadores de igualdad
La gramática del evaluador de expresiones proporciona el operador de igualdad ==. Este operador es el equivalente del operador = de Transact-SQL y el operador == de C#.
Funciones
El lenguaje de expresiones incluye funciones de fecha y hora, funciones matemáticas y funciones de cadena similares a las funciones de Transact-SQL y los métodos de C#.
Unas cuantas funciones se llaman igual que las funciones de Transact-SQL, pero tienen una funcionalidad ligeramente distinta en el evaluador de expresiones.
En Transact-SQL, la función ISNULL reemplaza valores NULL por un valor especificado, mientras que la función ISNULL del evaluador de expresiones devuelve un valor booleano en función de si una expresión es NULL.
En Transact-SQL, la función ROUND incluye la opción de truncar el conjunto de resultados, mientras que la función ROUND del evaluador de expresiones no ofrece esta opción.
Para obtener más información, vea Funciones (SSIS).