WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Utilización de la sentencia CALL para invocar una rutina escrita por un usuario

La sentencia CALL de ESQL invoca rutinas que se han creado e implementado de distintas formas.

Una rutina es una función o un procedimiento definido por el usuario que se ha definido mediante una de las sentencias siguientes:
  • CREATE FUNCTION
  • CREATE PROCEDURE
Puede utilizar la sentencia CALL para invocar una rutina que se ha implementado de alguna de estas maneras:
  • ESQL
  • Java™
  • Como un procedimiento almacenado en una base de datos
  • Como una función incorporada (proporcionada por el intermediario)

    Puede utilizar CALL para invocar funciones incorporadas (proporcionadas por el intermediario) y funciones SQL definidas por el usuario pero, normalmente, utilizará directamente sus nombres en expresiones.

Para obtener detalles de la sintaxis y parámetros de la sentencia CALL, consulte Sentencia CALL. Para obtener un ejemplo de la utilización de CALL, consulte los ejemplos en Sentencia CREATE PROCEDURE.

Invocación de una rutina ESQL

Una rutina se invoca como un método ESQL si la definición de la rutina especifica una cláusula LANGUAGE de ESQL o si la rutina es una función incorporada. Ha de haber una correspondencia exacta de los tipos de datos y direcciones de cada parámetro, entre la definición y la llamada (CALL). Una rutina ESQL está autorizada a devolver cualquier tipo de datos ESQL, excluyendo List y Row.

Llamada a una rutina Java

Una rutina se llama como un método Java si la definición de la rutina especifica una cláusula LANGUAGE de JAVA. Ha de haber una correspondencia exacta de los tipos de datos y direcciones de cada parámetro, entre la definición y la llamada (CALL). Si el método Java tiene un tipo de retorno nulo, no se puede utilizar la cláusula INTO porque no hay ningún valor a devolver.

Una rutina Java puede devolver cualquier tipo de datos en Tabla de correlación de tipos de datos ESQL a Java, excluyendo List y Row.

Llamada a un procedimiento almacenado de base de datos

Una rutina se invoca como procedimiento almacenado de base de datos si la definición de la rutina tiene una cláusula LANGUAGE de DATABASE.

Cuando se efectúa una llamada a un procedimiento almacenado de base de datos, el intermediario busca una definición (creada por una sentencia CREATE PROCEDURE) que coincida con el nombre local del procedimiento. A continuación, el intermediario utiliza la secuencia siguiente para resolver el nombre por el que se conoce el procedimiento en la base de datos y el esquema de base de datos al que pertenece:

  1. Si la sentencia CALL especifica una cláusula IN, el nombre del origen de datos y/o el esquema de base de datos se toma de la cláusula IN.
  2. Si el nombre del origen de datos no lo proporciona una cláusula IN en la sentencia CALL, se toma del atributo DATASOURCE del nodo.
  3. Si el esquema de base de datos no lo proporciona una cláusula IN en la sentencia CALL, pero se especifica en la cláusula EXTERNAL NAME de la sentencia CREATE PROCEDURE, se toma de la cláusula EXTERNAL NAME.
  4. Si no se especifica ningún esquema de base de datos en la cláusula EXTERNAL NAME de la sentencia CREATE PROCEDURE, se utiliza el nombre de usuario de la base de datos como nombre de esquema. Si se encuentra un procedimiento coincidente, se invoca la rutina.

La principal utilidad de la cláusula IN de la sentencia CALL es que permite elegir dinámicamente el origen de datos y/o el esquema de base de datos en tiempo de ejecución. La cláusula EXTERNAL SCHEMA también permite elegir dinámicamente el esquema de base de datos que contiene el procedimiento almacenado, pero no es tan flexible como la cláusula IN y sólo se conserva por compatibilidad con versiones anteriores. En las aplicaciones nuevas ya no se utiliza).

Si la rutina llamada tiene especificado DYNAMIC RESULT SETS en la definición, el número de expresiones de la ListaParámetros de la sentencia CALL debe coincidir con el número de parámetros en la rutina, más el número de DYNAMIC RESULT SETS. Por ejemplo, si la rutina tiene tres parámetros y dos DYNAMIC RESULT SETS, la sentencia CALL debe pasar cinco parámetros a la rutina llamada. Los parámetros pasados para los dos DYNAMIC RESULT SETS deben ser parámetros de lista; es decir, deben ser referencias de campo calificadas con corchetes de matriz [ ]; por ejemplo Environment.ResultSet1[].

Un procedimiento almacenado de base de datos está autorizado a devolver cualquier tipo de datos ESQL, excluyendo Interval, List y Row.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:58:22


Tema de tareaTema de tarea | Versión 8.0.0.5 | ac06009_