Utilice el nodo Database para interactuar con una base de datos en el origen de datos ODBC especificado. Defina la naturaleza de la interacción codificando sentencias ESQL que especifican los datos del mensaje de entrada y quizás los transforman de alguna manera (por ejemplo, para realizar un cálculo), y asignan el resultado a una tabla de base de datos.
Puede establecer una propiedad para controlar si la actualización de la base de datos se confirma inmediatamente o si se difiere hasta que el flujo de mensajes se complete, momento en el que la actualización se confirma o se restituye según el estado general de realización del flujo de mensajes.
Aunque puede utilizar este nodo para actualizar la base de datos, no puede efectuar actualizaciones en el mensaje.
El nodo Database se representa en el entorno de trabajo con el siguiente icono:
Consulte los ejemplos siguientes para ver cómo puede utilizar este nodo:
Por ejemplo, supongamos que recibe un pedido de 20 monitores. Si tiene suficientes monitores en el almacén, desea disminuir las existencias en el almacén. Puede utilizar el nodo Database para comprobar que tenga suficientes monitores disponibles y disminuir el valor del campo cantidad en la base de datos.
Una vez ha puesto una instancia del nodo Database en un flujo de mensajes, puede configurarlo. Pulse el botón derecho del ratón en el nodo en la vista de editor y pulse Propiedades. Aparecen las propiedades básicas del nodo.
Todas las propiedades obligatorias para las que ha de entrar un valor (las que no tienen definido un valor por omisión) aparecen con un asterisco en el diálogo de propiedades.
Configure el nodo Database de la manera siguiente:
En sistemas z/OS, el intermediario utiliza el ID de tarea iniciada de intermediario o el ID de usuario y contraseña que se han especificado en el mandato mqsisetdbparms del JCL BIPSDBP del conjunto de datos de personalización <hlq>.SBIPPROC.
Cuando codifica sentencias ESQL que interactúan con tablas, se da por hecho que esas tablas existen dentro de esta base de datos. Si no es este el caso, el intermediario genera un error de base de datos durante la ejecución.
Codifique las sentencias ESQL para personalizar el comportamiento del nodo Database, en un archivo ESQL que esté asociado al flujo de mensajes en el que ha incluido esta instancia del nodo Database. El archivo ESQL, que por omisión tiene el nombre <nombre_flujo_mensajes>.esql, contiene ESQL para cada nodo del flujo de mensajes que lo necesite. Cada parte del código relacionada con un nodo específico se denomina módulo.
Si todavía no existe ningún archivo ESQL para este flujo de mensajes, pulse el botón derecho del ratón en el nodo Database y pulse Abrir ESQL. Se creará y abrirá un nuevo archivo ESQL en la vista de editor ESQL.
Si ya existe un archivo ESQL, pulse el botón Examinar al lado de la propiedad Sentencia. Aparece el diálogo Selección de módulo, que lista los módulos disponibles del nodo Database definidos en los archivos ESQL a los que este flujo de mensajes puede acceder (pueden definirse archivos ESQL en otros proyectos dependientes). Seleccione el módulo apropiado y pulse Aceptar. Si no hay disponibles módulos apropiados, la lista está vacía.
Si el módulo que ha especificado no existe, se crea automáticamente y el editor coloca el archivo para mostrarlo. Si el archivo y el módulo ya existen, el editor coloca el archivo y resalta el módulo adecuado.
Si lo prefiere, puede abrir el archivo ESQL adecuado en el Navegador de recursos y seleccionar este nodo en la vista de esquema.
Si se crea un esqueleto de módulo para este nodo en un archivo ESQL nuevo o ya existente, consta del ESQL siguiente. En este ejemplo se muestra el nombre de módulo por omisión:
CREATE DATABASE MODULE <nombre_flujo>_Database CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN RETURN TRUE; END; END MODULE;
Si crea su propio módulo ESQL, debe crear este esqueleto exactamente tal como se muestra. Puede actualizar el nombre por omisión, pero asegúrese de que el nombre que especifique coincida con el nombre de la propiedad de nodo Sentencia correspondiente.
Añada su propio ESQL para personalizar este nodo después de la sentencia BEGIN y antes de RETURN TRUE.
También puede crear un archivo ESQL pulsando
.En este módulo puede utilizar todas las sentencias ESQL incluidos SET, WHILE, DECLARE e IF, pero (a diferencia del nodo Compute) el nodo Database propaga el mensaje que recibe en su terminal de entrada al terminal de salida sin modificar. Esto significa que, al igual que el nodo Filter, en un nodo Database sólo tiene un mensaje al que hacer referencia.
Puesto que no puede modificar ninguna parte de ningún mensaje, la sentencia de asignación (la sentencia SET, no la cláusula SET de la sentencia INSERT) sólo puede asignar valores a variables temporales. Por tanto, el ámbito de las acciones que puede realizar con una sentencia de asignación es limitado.
Si lo prefiere, puede abrir el archivo ESQL adecuado en el Navegador de recursos y seleccionar este nodo en la vista de esquema.
Cuando selecciona el recuadro, el nodo gestiona todos los códigos de retorno positivos de la base de datos como errores y genera excepciones igual que si se tratase de errores negativos o más graves.
Si no selecciona el recuadro, el nodo trata los avisos como códigos de retorno normales y no emite excepciones. El aviso más significativo es no encontrado que, en la mayoría de los casos, puede tratarse de forma segura como un código de retorno normal.
Si deselecciona el recuadro, deberá incluir ESQL para comprobar si hay algún error de la base de datos que pudiera devolverse después de cada llamada efectuada a la base de datos (esto puede hacerse utilizando SQLCODE y SQLSTATE). Si se ha producido un error, deberá gestionarlo en el flujo de mensajes para asegurarse de la integridad del intermediario y de la base de datos: el error se ignorará si no lo gestiona a través de su propio proceso, debido a que ha elegido no invocar el manejo de errores por omisión mediante el intermediario. Por ejemplo, puede incluir la sentencia THROW de ESQL para generar una excepción en este nodo o puede utilizar el nodo Throw para generar posteriormente su propia excepción.
Pulse Cancelar para cerrar el diálogo y eliminar todos los cambios que ha efectuado en las propiedades.
Los terminales del nodo Database se describen en la tabla siguiente.
Terminal | Descripción |
---|---|
In (de entrada) | El terminal de entrada que acepta un mensaje para que lo procese el nodo. |
Failure (de anomalías) | El terminal de salida al que se propaga el mensaje de entrada si se detecta una anomalía durante el cálculo. Si ha seleccionado Tratar los avisos como errores, el nodo propaga el mensaje a este terminal aunque el proceso se complete satisfactoriamente. |
Out (de salida) | El terminal de salida al que se direcciona el mensaje transformado cuando se completa el proceso en el nodo. Es posible que una sentencia PROPAGATE también direccione el mensaje transformado a este terminal. |
Out1 | El primer terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado. |
Out2 | El segundo terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado. |
Out3 | El tercer terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado. |
Out4 | El cuarto terminal de salida alternativo al que es posible que una sentencia PROPAGATE direccione el mensaje transformado. |
Las tablas siguientes describen las propiedades del nodo; la columna con la cabecera O indica si la propiedad es obligatoria (marcada con un asterisco en el diálogo de propiedades si tiene que entrar un valor cuando no hay definido ningún valor por omisión), la columna con la cabecera C indica si la propiedad es configurable (puede cambiar el valor cuando añade el flujo de mensajes al archivo bar para desplegarlo).
Las propiedades básicas del nodo Database se describen en la siguiente tabla.
Propiedad | O | C | Valor por omisión | Descripción |
---|---|---|---|---|
Origen de datos | No | Sí | El nombre del origen de datos ODBC de la base de datos en la que residen las tablas a las que se hace referencia en el ESQL asociado a este nodo (identificado por la propiedad Sentencia). | |
Sentencia | Sí | No | Base de datos | Nombre del módulo dentro del archivo ESQL que contiene las sentencias para ejecutar contra la base de datos. |
Transacción | Sí | No | Automática | La modalidad de transacción para el nodo. Puede ser Automática o Confirmar. |
Tratar los avisos como errores | Sí | No | No seleccionado | Tratar los avisos SQL de base de datos como errores. Si selecciona el recuadro, se realizará esta acción. |
Generar excepción en error de la base de datos | Sí | No | Seleccionado | Los errores de la base de datos hacen que el intermediario genere una excepción. Si selecciona el recuadro, se realizará esta acción. |
En la tabla siguiente se describen las propiedades de descripción del nodo Database.
Propiedad | O | C | Valor por omisión | Descripción |
---|---|---|---|---|
Descripción corta | No | No | Descripción breve del nodo. | |
Descripción larga | No | No | Texto que describe el propósito del nodo en el flujo de mensajes. |