Para obter detalhes sobre a sintaxe e os parâmetros da instrução CALL, consulte Instrução CALL. Para obter um exemplo da utilização de CALL, consulte os exemplos em Instrução CREATE PROCEDURE.
Uma rotina será chamada como um método ESQL se a definição da rotina especificar uma cláusula LANGUAGE do ESQL ou se a rotina for uma função incorporada.
Deve haver uma correspondência uma-a-uma exata, entre a definição e a CALL, dos tipos de dados e direções de cada parâmetro.
Uma rotina ESQL pode retornar qualquer tipo de dados ESQL, exceto Lista e Linha.
Uma rotina será invocada como um método Java se a definição da rotina especificar uma cláusula LANGUAGE de JAVA.
Deve haver uma correspondência uma-a-uma exata, entre a definição e a CALL, dos tipos de dados e direções de cada parâmetro.
Se o método Java tiver um tipo de retorno nulo, a cláusula INTO não poderá ser utilizada porque não existe nenhum valor para ser retornado.
Uma rotina Java pode retornar qualquer tipo de dados na Tabela de Mapeamento de Tipo de Dados de ESQL para Java. Observe que isso exclui Lista e Linha.
Uma rotina será invocada como um procedimento armazenado do banco de dados se a definição da rotina tiver uma cláusula LANGUAGE de DATABASE.
Quando uma chamada é feita a um procedimento armazenado do banco de dados, o intermediário procura uma definição (criada pela instrução CREATE PROCEDURE) que corresponde ao nome local do procedimento. O intermediário, em seguida, utiliza a seguinte seqüência para resolver o nome pelo qual o procedimento é conhecido no banco de dados e o esquema do banco de dados ao qual ele pertence:
Se a rotina chamada tiver quaisquer DYNAMIC RESULT SETS especificados em sua definição, o número de expressões na ParameterList da instrução CALL deverá corresponder ao número de parâmetros reais para a rotina, além do número de DYNAMIC RESULT SETS. Por exemplo, se a rotina tiver três parâmetros e dois DYNAMIC RESULT SETS, a instrução CALL deverá transmitir cinco parâmetros para a rotina chamada. Os parâmetros transmitidos para dois DYNAMIC RESULT SETS devem ser parâmetros de lista; ou seja, devem ser referências de campo qualificadas com colchetes de matriz [ ]; por exemplo, Environment.ResultSet1[].
Um procedimento armazenado do banco de dados pode retornar qualquer tipo de dados ESQL, exceto Intervalo, Lista e Linha.