Referencia a columnas en una base de datos

Aunque la sintaxis de SELECT de SQL estándar está soportada para las consultas a una base de datos externa, hay varias cuestiones que es necesario tener presente. Debe colocar la palabra clave Database como prefijo del nombre de la tabla para indicar que la sentencia SELECT tiene como destino la base de datos externa, en lugar de una estructura repetitiva en el mensaje.

El formato básico de la sentencia SELECT de base de datos es el siguiente:

SELECT ...
  FROM Database.TABLE1
  WHERE ...

Si es necesario, puede especificar un nombre de esquema:

SELECT ...
  FROM Database.SCHEMA.TABLE1
  WHERE ...

donde SCHEMA es el nombre del esquema en que se ha definido la tabla TABLE1. Incluya el esquema si el ID de usuario con el que está trabajando no coincide con el esquema. Por ejemplo, si su ID de usuario es USER1, la expresión Database.TABLE1 es equivalente a Database.USER1.TABLE1. Sin embargo, si el esquema asociado a la tabla en la base de datos es db2admin, debe especificar Database.db2admin.TABLE1. Si no incluye el esquema y éste no coincide con su ID de usuario actual, el intermediario generará un error de ejecución cuando el flujo de mensajes procese un mensaje.

Califique las referencias a los nombres de columna con el nombre de tabla o el nombre de correlación definido para la tabla por la cláusula FROM. Por consiguiente, donde normalmente podría ejecutar una consulta como:

SELECT column1, column2 FROM table1

debe escribir uno de los dos formatos siguientes:

SELECT T.column1, T.column2 FROM Database.table1 AS T
 
SELECT table1.column1, table1.column2 FROM Database.table1

Esto es necesario para distinguir las referencias a las columnas de base de datos de las referencias a los campos en un mensaje que también podrían aparecer en la sentencia SELECT:

SELECT T.column1, T.column2 FROM Database.table1
  AS T WHERE T.column3 = Body.Field2

La opción estándar de seleccionar todo de SQL está soportada en la cláusula SELECT. Si utiliza esta opción, debe calificar los nombres de columna con el nombre de tabla o el nombre de correlación definido para la tabla. Por ejemplo:

SELECT T.* FROM Database.Table1 AS T

Al utilizar los nombres de procedimiento y función de ESQL en una consulta de base de datos, la posición de éstos en la llamada afecta a la manera como se procesan estos nombres. Si se determina que el procedimiento o la función afecta a los resultados devueltos por la consulta, no se procesará como ESQL y se pasará como parte de la llamada a la base de datos.

Se aplica cuando se intenta utilizar un nombre de función o procedimiento con los identificadores de columna en la sentencia SELECT.

Por ejemplo, si utiliza una sentencia CAST en un identificador de columna especificado en la cláusula Select, se utilizará durante la consulta de base de datos para determinar el tipo de datos de los datos que se devuelvan para esa columna. No se ejecutará un CAST de ESQL en ese tipo de datos ESQL y los datos devueltos estarán afectados por la interpretación de la interacción de base de datos de ese tipo de datos.

Si utiliza una función o procedimiento en un identificador de columna especificado en la cláusula WHERE, se pasará directamente al gestor de bases de datos para su proceso.

Los ejemplos de los temas siguientes muestran cómo se representan los conjuntos de resultados de consultas de base de datos externas en WebSphere Business Integration Message Broker. Los resultados de las consultas de base de datos se asignan a campos en un mensaje mediante un nodo Compute.

Una función de columna es aquélla que toma los valores de una sola columna en todas las filas seleccionadas de una tabla o mensaje y devuelve un solo resultado escalar.

Conceptos relacionados
Flujos de mensajes
ESQL
Diseño de mensajes

Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Gestión de archivos ESQL

Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Función CARDINALITY
Función SELECT
Mensaje de ejemplo