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).
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:
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.
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.
CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "mySchema.myPackage.myProc";
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.
CALL myProc('HelloWorld');
CALL myProc('HelloWorld') EXTERNAL SCHEMA 'Schema2';
CALL myProc('HelloWorld') EXTERNAL SCHEMA InputRoot.XML.Test.SchemaName;
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
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ac17040_ |