Sentencia PASSTHRU

La sentencia PASSTHRU evalúa una expresión y ejecuta la serie de caracteres resultante como una sentencia de base de datos.

SYNTAX
Notas:
  1. La mitad inferior del diagrama principal de sintaxis (la segunda de las dos maneras de codificar la Expresión que se pasa a PASSTHRU) describe sintaxis que se conserva por compatibilidad con versiones anteriores.

Uso

El uso principal de la sentencia PASSTHRU es emitir mandatos administrativos a las bases de datos (por ejemplo, para crear una tabla).
Nota: No utilice PASSTHRU para llamar a los procedimientos almacenados, en lugar de utilizar la sentencia CALL. Esto se debe a que PASSTHRU impone limitaciones (por ejemplo, no puede utilizar parámetros de salida).

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.

Ejemplos

El ejemplo siguiente crea la tabla "Customers" en el esquema "Shop" en la base de datos DSN1:
PASSTHRU 'CREATE TABLE Shop.Customers (
  CustomerNumber INTEGER,
  FirstName      VARCHAR(256),
  LastName       VARCHAR(256),
  Street         VARCHAR(256),
  City           VARCHAR(256),
  Country        VARCHAR(256)
)' TO Database.DSN1;
Si, como en el último ejemplo, la sentencia ESQL se especifica como un literal de serie de caracteres, debe encerrarla entre apóstrofos. Sin embargo, si se especifica como una variable, omita los apóstrofos. Por ejemplo:
SET myVar = 'SELECT * FROM user1.stocktable';
SET OutputRoot.XML.Data[] = PASSTHRU(myVar);
El ejemplo siguiente suprime ("drops") la tabla "Customers" en el esquema "Shop" en la base de datos DSN1:
PASSTHRU 'DROP TABLE Shop.Customers' TO Database.DSN1; 
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak05100_