Referencia a columnas de una base de datos

Aunque la sintaxis SQL SELECT estándar tiene soporte para consultas en una base de datos externa, hay varios puntos que hay que tener en cuenta. Debe añadir como prefijo al nombre de la tabla la palabra clave Database para indicar que SELECT tendrá como destino una base de datos externa y no una estructura de repetición del mensaje.

El formato básico de SELECT de base de datos es:

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 el que se ha definido la tabla TABLE1. Incluya el esquema si el ID de usuario bajo el que está ejecutando no coincide con el esquema. Por ejemplo, si userID es USER1, la expresión Database.TABLE1 es equivalente a Database.USER1.TABLE1. No obstante, si el esquema asociado a la tabla de la base de datos es db2admin, debe especificar Database.db2admin.TABLE1. Si no incluye el esquema y éste no coincide con el ID de usuario actual, el intermediario genera un error de tiempo de ejecución cuando el flujo de mensajes procesa un mensaje.

Si, al igual que en los ejemplos anteriores, no se especifica un origen de datos, TABLE1 debe ser una tabla en la base de datos por omisión especificada por la propiedad origen de datos del nodo. Para acceder a datos en una base de datos distinta de la base de datos por omisión especificada en la propiedad origen de datos del nodo, debe especificar el origen de datos explícitamente. Por ejemplo:
SELECT ...
  FROM Database.DataSource.SCHEMA.TABLE1
  WHERE ...

Limite las referencias a los nombres de columnas con el nombre de tabla o el nombre de correlación definido para la tabla mediante la cláusula FROM. Por lo tanto, donde normalmente ejecutaría una consulta como, por ejemplo:

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 diferenciar las referencias a las columnas de base de datos desde cualquier referencia a los campos de un mensaje que también pueden aparecer en la sentencia SELECT:

SELECT T.column1, T.column2 FROM Database.table1
  AS T WHERE T.column3 = Body.Field2
Puede utilizar la cláusula AS para renombrar las columnas devueltas. Por ejemplo:
SELECT T.column1 AS price, T.column2 AS item 
  FROM Database.table1 AS T WHERE...

Se da soporte a la opción SQL para seleccionar lo todo en el cláusula SELECT. Si utiliza esta opción, debe calificar los nombres de columnas con el nombre de tabla o el nombre de correlación definido para la tabla. Por ejemplo:

SELECT T.* FROM Database.Table1 AS T

Cuando utiliza nombres de funciones y procedimientos ESQL en una consulta de base de datos, la posición de los mismos en la llamada afecta el modo en que se procesan estos nombres. Si se determina que el procedimiento o la función afecta al resultado devuelto por la consulta, no se procesa como ESQL y se pasa como parte de la llamada a base de datos.

Esto es aplicable 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 utiliza durante la consulta de base de datos para determinar el tipo de datos de los datos que se están devolviendo para dicha columna. Se efectúa una transformación CAST ESQL en dicho tipo de datos ESQL y los datos devueltos resultan afectados por el modo en que la interacción de base de datos interpreta dicho tipo de datos.

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

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

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

Conceptos relacionados
Visión general de flujos de mensajes
Visión general de ESQL
Modelado de mensajes
Tareas relacionadas
Diseñar un flujo de mensajes
Definir el contenido del flujo de mensajes
Gestión de archivos ESQL
Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
Referencia de ESQL
Función CARDINALITY
Función SELECT
Mensaje de ejemplo
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak05760_