Invocar procedimientos almacenados

Puede invocar un procedimiento almacenado en una base de datos utilizando la sentencia ESQL CALL con una cláusula EXTERNAL.

Los procedimientos almacenados en SQLServer no están soportados ni tampoco los procedimientos sobrecargados en cualquier base de datos. (Un procedimiento sobrecargado es un procedimiento con el mismo nombre que otro procedimiento del mismo esquema de base de datos con un número diferente de parámetros o con parámetros de tipos diferentes.) Si el intermediario detecta que un procedimiento se ha sobrecargado, genera una excepción.

Cuando invoca un procedimiento almacenado con la sentencia CALL, el intermediario se asegura de que la definición ESQL y la definición de base de datos coincidan.

Si ha especificado un carácter de porcentaje individual para el nombre de esquema cuando ha creado el procedimiento, indica que el nombre de esquema es dinámico y se ha resuelto en la sentencia CALLA (vea los párrafos siguientes).

Creación de un procedimiento almacenado en ESQL

Cuando define un procedimiento ESQL que se corresponde con un procedimiento almacenado en la base de datos, puede especificar un nombre calificado (donde el calificador es un esquema de base de datos) o un nombre no calificado.

Para crear un procedimiento almacenado:

  1. Codifique una sentencia de forma similar a este ejemplo para crear un procedimiento no calificado:
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "myProc";

    La definición ESQL de este ejemplo tiene el mismo nombre que el nombre del procedimiento de base de datos. Esto no es necesario. El nombre del procedimiento de base de datos que especifique aquí debe coincidir con la definición que ha creado en la base de datos, pero puede especificar cualquier nombre que seleccione para el procedimiento ESQL correspondiente.

  2. Codifique una sentencia de forma similar a este ejemplo para crear un procedimiento calificado:
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "Schema1.Proc1";

    En este ejemplo, el nombre del procedimiento ESQL no coincide con el nombre del procedimiento de base de datos.

  3. Codifique una sentencia de forma similar a este ejemplo para crear un procedimiento calificado en un paquete Oracle:
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "mySchema.myPackage.myProc";
  4. Codifique una sentencia de forma similar a este ejemplo para crear un procedimiento calificado para el que el nombre de esquema se determina durante la ejecución:
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "%.myProc";

    Si crea un procedimiento con esta especificación y utiliza la sentencia CALL correspondiente (que se muestra a continuación), puede decidir exactamente a qué procedimiento almacenado se llama en el punto en el que se efectúa la llamada.

Para obtener ejemplos de definiciones de procedimientos almacenados en la base de datos, consulte Sentencia CREATE PROCEDURE.

Llamada a un procedimiento almacenado

  1. Codifique una sentencia de forma similar a este ejemplo para invocar un procedimiento no calificado o un procedimiento calificado fijo:
    CALL myProc('HelloWorld');
  2. Codifique una sentencia similar a este ejemplo para invocar un procedimiento calificado con un esquema dinámico:
    CALL myProc('HelloWorld') EXTERNAL SCHEMA 'Schema2';
  3. Codifique una sentencia similar a este ejemplo para invocar un procedimiento calificado con un esquema dinámico derivado del contenido del mensaje de entrada:
    CALL myProc('HelloWorld') EXTERNAL SCHEMA InputRoot.XML.Test.SchemaName;
Si no ha especificado el nombre de esquema como un carácter de porcentaje individual en la cláusula EXTERNAL NAME de la sentencia CREATE PROCEDURE, se ignora la cláusula del nombre EXTERNAL SCHEMA de la sentencia CALL, si se especifica.

Conceptos relacionados
Flujos de mensajes
Procedimientos ESQL

Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Manejo de errores en flujos de mensajes

Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Sentencia CALL
Sentencia CREATE PROCEDURE