Para invocar un procedimiento
almacenado en una base de datos, utilice la sentencia ESQL CALL. El procedimiento almacenado debe estar definido por una sentencia CREATE PROCEDURE que tenga una cláusula LANGUAGE de DATABASE y una cláusula EXTERNAL NAME que identifique el nombre del procedimiento en la base de datos
y, opcionalmente, el esquema de base de datos al que pertenece.
Cuando se invoca un procedimiento almacenado
con una sentencia CALL, el intermediario se asegura de que coincidan la definición ESQL
y la definición de base de datos:
- El nombre externo del procedimiento debe coincidir con un procedimiento de la base de datos.
- El número de parámetros debe ser el mismo.
- El tipo de cada parámetro debe ser el mismo.
- La dirección de cada parámetro (IN, OUT, INOUT) debe ser la misma.
Las
siguientes restricciones se aplican al uso de procedimientos almacenados:
- No se da soporte a los procedimientos sobrecargados. (Un procedimiento
sobrecargado es aquél que tiene el mismo nombre que otro procedimiento del
mismo esquema de base de datos con un número diferente de parámetros o
parámetros con tipos diferentes.) Si el intermediario detecta que un procedimiento está sobrecargado,
genera una excepción.
- En una declaración de procedimiento almacenado de Oracle, no
se le permite limitar los parámetros CHAR y VARCHAR2 con una longitud, ni los
parámetros NUMBER con una precisión, una escala, o ambas cosas. Utilice %TYPE cuando
declare parámetros CHAR, VARCHAR y NUMBER para imponer restricciones en un parámetro
formal.
- Evite cambiar el tipo o número de parámetros de un procedimiento sin cambiar también
el nombre. Si no se pueden evitar los cambios de este tipo, todos los grupos de ejecución
con procedimientos con parámetros cambiados invocados por el ESQL deben reiniciarse.