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.
SYNTAXEl 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.
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).
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.
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'));