Función PASSTHRU

La función PASSTHRU evalúa una expresión y ejecuta la serie de caracteres resultante como una sentencia de base de datos, devolviendo un conjunto de resultados.

La función PASSTHRU es similar a la sentencia PASSTHRU, que se describe en Sentencia PASSTHRU.

SYNTAX
Notas:
  1. La mitad inferior del diagrama principal de sintaxis describe sintaxis que se conserva por compatibilidad con versiones anteriores.

Uso

El uso principal de la función PASSTHRU es emitir SELECT complejos, no soportados actualmente por el intermediario, a las bases de datos. (Algunos ejemplos de SELECT complejos no soportados actualmente por el intermediario son los que contienen cláusulas GROUP BY o HAVING.)

Se evalúa la primera expresión y la serie de caracteres resultante se pasa a la base de datos que indica la ReferenciaBaseDatos (en la cláusula TO) para su ejecución. Si no se especifica la cláusula TO, se utiliza la base de datos que indica el atributo data source del nodo.

Utilice signos de interrogación (?) en la serie de caracteres de base de datos, para indicar parámetros. Los valores de parámetro los proporciona la cláusula VALUES.

Si se especifica la cláusula VALUES, se evalúan sus expresiones y se pasan a la base de datos como parámetros; (es decir, se sustituyen los signos de interrogación por sus valores en la sentencia de base de datos).

Si sólo hay una expresión VALUE, el resultado puede ser, o no ser, una lista. Si es una lista, se sustituyen secuencialmente los signos de interrogación por los valores escalares de la lista. Si no es una lista, el (único) signo de interrogación se sustituye por el único valor escalar, en la sentencia de base de datos. Si hay más de una expresión VALUE, ninguna de las expresiones deben tener el valor de una lista. Los signos de interrogación se sustituyen por sus valores escalares, secuencialmente.

Puesto que la sentencia de base de datos la construye el programa de usuario, no es necesario utilizar marcadores de parámetros (es decir, signos de interrogación) o la cláusula VALUES, porque el programa podría proporcionar la sentencia de base de datos entera como una serie de caracteres literal. Sin embargo, utilice marcadores de parámetros siempre que sea posible, porque así se reduce el número de sentencias distintas que deben prepararse y almacenarse en la base de datos y el intermediario.

Referencia de base de datos

Una referencia de base de datos es un caso especial de referencias de campo que se utiliza para hacer referencia a los árboles de mensaje. Consta de la palabra "Database" seguido de un nombre de origen de datos (es decir, el nombre de una instancia de base de datos).

Puede especificar el nombre del origen de datos directamente o mediante una expresión encerrada entre llaves ({...}). Un nombre de origen de datos especificado directamente, puede ser sustituido. Es decir, si el nombre utilizado se ha declarado como un nombre conocido, se utiliza más bien el valor del nombre declarado en lugar del nombre mismo (consulte Sentencia DECLARE).

Manejo de errores

Es posible que se produzcan errores durante las operaciones de PASSTHRU. Por ejemplo, es posible que la base de datos no esté operativa o que la sentencia no sea válida. En estos casos, se genera una excepción (a menos que el nodo tenga su propiedad Generar excepción en error de base de datos establecida en FALSE). Estas excepciones establecen los valores SQL adecuados de código, estado, error nativo y texto de error, y pueden ser manejadas por los manejadores de errores (consulte la sentencia DECLARE HANDLER).

Para obtener más información sobre el manejo de errores de base de datos, consulte Captura del estado de la base de datos.

Ejemplo

El ejemplo siguiente efectúa un SELECT en la tabla "Table1" en el esquema "Schema1" en la base de datos DSN1, pasando dos parámetros a la cláusula WHERE y solicitando que el conjunto de resultados se ordenen por nombre, de forma ascendente. El conjunto de resultados se asigna a la carpeta SelectResult:
SET OutputRoot.XML.Data.SelectResult.Row[] = 
  PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R WHERE R.Name = ? OR R.Name = ? ORDER BY Name'
   TO Database.DSN1
   VALUES ('Name1', 'Name4'));
Conceptos relacionados
Visión general de ESQL
Tareas relacionadas
Desarrollo de ESQL
Referencia relacionada
Sentencia PASSTHRU
Diferentes funciones ESQL
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak05890_