Función SELECT

SELECT es una función compleja que combina, filtra y vuelve a dar formato a datos complejos de mensaje y de base de datos.

Sintaxis

  • Origen es una referencia a un campo, matriz de campos o tabla de base de datos
  • Alias es un nombre de variable temporal
  • Condición es cualquier expresión booleana
  • Destino es una vía de acceso relativa

SELECT combina, filtra y vuelve a dar formato a datos complejos de mensaje y de base de datos. Es el método normal de transformación de mensajes.

No hay diferencias sintácticas o semánticas entre una SELECT que opere en una tabla de base de datos y otra que opere en un mensaje. En concreto:
  • Las expresiones de cláusula SELECT pueden utilizar cualquier operador y función del intermediario en cualquier combinación. Pueden hacer referencia a las columnas de las tablas, campos de mensajes, nombres de correlación declarados por las SELECT que contienen y cualquier otra variable o constante declarada que esté dentro del ámbito.
  • Sus cláusulas AS correspondientes pueden contener vías de acceso de múltiples partes. Por ejemplo, A.B.C, incluidos los especificadores de tipo de campo como A.B.(XML.Attribute)C), expresiones de nombre (por ejemplo, A.B.{var}) e índices (por ejemplo, A.B.C[i]).

    Las expresiones que haya en estas vías de acceso pueden utilizar cualquier operador y función del intermediario en cualquier combinación. Las expresiones pueden hacer referencia a las columnas de las tablas, campos de mensajes, nombres de correlación declarados por las SELECT que contienen y cualquier otra variable o constante declarada.

  • La cláusula FROM puede contener varias referencias a bases de datos, varias referencias a mensajes, o una mezcla de ambas. Puede unir tablas con tablas, mensajes con mensajes, o tablas con mensajes, con las limitaciones siguientes:
    • Las expresiones de la cláusula FROM de base de datos como, por ejemplo, Database.Schema1.Table1, no pueden contener expresiones de ninguna clase. No puede calcular un nombre de esquema o tabla durante la ejecución.
    • Si la cláusula FROM hace referencia tanto a mensajes como a tablas, las tablas deben preceder a los mensajes.
  • La expresión de cláusula WHERE también puede utilizar cualquier operador y función del intermediario en cualquier combinación. Las expresiones pueden hacer referencia a las columnas de las tablas, campos de mensajes, nombres de correlación declarados por las SELECT que contienen y cualquier otra variable o constante declarada. No obstante, tenga en cuenta lo siguiente:
    • El intermediario trata las expresiones de cláusula WHERE examinando la expresión y decidiendo si la base de datos puede evaluar la expresión entera.

      Si puede hacerlo, se suministrará a la base de datos. Para que la base de datos la evalúe, sólo debe utilizar aquellas funciones y operadores soportados por la base de datos.

      No obstante, todavía puede hacer referencia a campos de mensajes, nombres de correlaciones declarados por las SELECT que contiene y cualesquiera otras variables o constantes declaradas que estén dentro del ámbito.

    • Si la base de datos no puede evaluar la expresión entera, el intermediario buscará operadores AND de nivel superior y examinará cada subexpresión por separado.

      A continuación, intentará proporcionar a la base de datos aquellas subexpresiones que ésta pueda evaluar, dejando que el intermediario evalúe el resto.

    Tiene que ser consciente de esta situación por dos razones:
    • Cambios aparentemente triviales en expresiones de cláusula WHERE pueden tener grandes efectos en el rendimiento. Puede determinar qué parte de la expresión se ha suministrado a la base de datos examinando un rastreo de usuario.
    • Las funciones de algunas bases de datos tienen diferencias sutiles de funcionamiento respecto a las del intermediario.
Utilice SELECT para:
  • Volver a dar formato a mensajes de manera general
  • Acceder a tablas de base de datos
  • Crear una matriz de salida que sea un subconjunto de una matriz de entrada
  • Crear una matriz de salida que sólo contenga los valores de una matriz de entrada
  • Contar el número de entradas de una matriz
  • Seleccionar el valor mínimo o máximo de varias entradas de una matriz
  • Sumar los valores de una matriz
SELECT de ESQL difiere del SELECT de SQL de base de datos de las maneras siguientes:
  • ESQL puede producir datos de resultados estructurados en árbol
  • ESQL puede aceptar matrices en cláusulas SELECT
  • ESQL tiene THE e ITEM
  • ESQL no tiene SELECT ALL
  • ESQL no tiene SELECT DISTINCT
  • ESQL no tiene GROUP BY o HAVING
  • ESQL no tiene función de columna AVG

Para obtener información sobre cómo utilizar la función SELECT, vea los temas indicados a continuación.

Conceptos relacionados
ESQL

Tareas relacionadas
Desarrollo de ESQL
Transformación de un mensaje XML sencillo
Transformación de un mensaje XML complejo
Devolución de un valor escalar en un mensaje XML
Interacción con bases de datos de usuario

Referencia relacionada
Preferencia de sintaxis
Funciones ESQL complejas