WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Usando a Instrução CALL para Chamar uma Rotina Gravada pelo Usuário

A instrução ESQL CALL chama rotinas que foram criadas e implementadas de diferentes maneiras.

Uma rotina é uma função ou procedimento definido pelo usuário que foi definido por uma das seguintes instruções:
  • CREATE FUNCTION
  • CREATE PROCEDURE
É possível usar a instrução CALL para chamar uma rotina que foi implementada de qualquer uma das seguintes maneiras:
  • ESQL
  • Java™
  • Como um procedimento armazenado em um banco de dados
  • Como uma função integrada (fornecida pelo intermediário)

    É possível usar CALL para chamar funções integradas (fornecidas pelo intermediário) e funções SQL definidas pelo usuário, geralmente você usaria seus nomes diretamente nas expressões.

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.

Chamando uma Rotina ESQL

Uma rotina é chamada como um método ESQL se a definição da rotina especificar uma cláusula LANGUAGE de ESQL ou se a rotina for uma função integrada. Deve haver uma correspondência exata de um a um dos tipos de dados e direções de cada parâmetro, entre a definição e CALL. Uma rotina ESQL pode retornar qualquer tipo de dados ESQL, exceto Lista e Linha.

Chamando uma Rotina Java

Uma rotina é chamada como um método Java se a definição da rotina especificar uma cláusula LANGUAGE de JAVA. Deve haver uma correspondência exata de um a um dos tipos de dados e direções de cada parâmetro, entre a definição e CALL. Se o método Java tiver um tipo de retorno nulo, a cláusula INTO não poderá ser usada porque não existe nenhum valor para retornar.

Uma rotina Java pode retornar qualquer tipo de dados na Tabela de Mapeamento de Tipo de Dados de ESQL para Java, excluindo Lista e Linha.

Chamando um Procedimento Armazenado do Banco de Dados

Uma rotina é chamada como um procedimento armazenado do banco de dados se a definição de 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:

  1. Se a instrução CALL especificar uma cláusula IN, o nome da origem de dados, o esquema do banco de dados ou ambos serão retirados da cláusula IN.
  2. Se o nome da origem de dados não for fornecido por uma cláusula IN na instrução CALL, ele será tirado do atributo DATASOURCE do nó.
  3. Se o esquema do banco de dados não for fornecido por uma cláusula IN na instrução CALL, mas for especificado na cláusula EXTERNAL NAME da instrução CREATE PROCEDURE, ele será tirado da cláusula EXTERNAL NAME.
  4. Se nenhum esquema de banco de dados for especificado na cláusula EXTERNAL NAME da instrução CREATE PROCEDURE, o nome do usuário do banco de dados será utilizado como o nome do esquema. Se um procedimento correspondente for localizado, a rotina será chamada.

O principal uso da cláusula IN da instrução CALL é que ela permite que a origem de dados, o esquema do banco de dados ou ambos sejam escolhidos dinamicamente no tempo de execução. (A cláusula EXTERNAL SCHEMA também permite que o esquema do banco de dados que contém o procedimento armazenado seja escolhido dinamicamente, mas não é tão flexível quanto a cláusula IN e é retida apenas para compatibilidade com versões anteriores. Sua utilização em novos aplicativos é obsoleta.)

Se a rotina chamada tiver qualquer DYNAMIC RESULT SETS especificado em sua definição, o número de expressões na ParameterList da instrução CALL deverá corresponder ao número de parâmetros na rotina, mais o 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.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:20


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ac06009_