Chamando Procedimentos Armazenados

Você pode chamar um procedimento que está armazenado em um banco de dados utilizando a instrução ESQL CALL com uma cláusula EXTERNAL.

Os procedimentos armazenados no SQLServer não são suportados assim como nos procedimentos sobrecarregados para qualquer banco de dados. (Um procedimento sobrecarregado é aquele que possui o mesmo nome de outro procedimento no mesmo esquema de banco de dados com um número diferente de parâmetros ou parâmetros com tipos diferentes.) Se outro intermediário detectar que um procedimento foi sobrecarregado, ele lançará uma exceção.

Ao chamar um procedimento armazenado com a instrução CALL, o intermediário assegurará que a definição ESQL e a definição do banco de dados são correspondentes:

Se você especificou um único caractere de percentual para o nome do esquema quando criou o procedimento, indicará que o nome do esquema é dinâmico e é resolvido na instrução CALL (veja abaixo).

Criando um Procedimento Armazenado no ESQL

Ao definir um procedimento ESQL que corresponda a um procedimento armazenado do banco de dados, você pode especificar um nome qualificado (em que o qualificador é um esquema de banco de dados) ou um nome não qualificado.

Para criar um procedimento armazenado:

  1. Codifique uma instrução semelhante a esse exemplo para criar um procedimento não qualificado:
    CREATE
    PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "myProc";

    A definição ESQL neste exemplo possui o mesmo nome que aquele do procedimento do banco de dados. Isso não é obrigatório; o nome do procedimento do banco de dados que você especifica aqui deve corresponder à definição que criou no banco de dados, mas é possível especificar qualquer nome que escolher para o procedimento ESQL correspondente.

  2. Codifique uma instrução semelhante a esse exemplo para criar um procedimento qualificado:
    CREATE
    PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "Schema1.Proc1";

    Nesse exemplo, o nome do procedimento ESQL não corresponde ao nome do procedimento do banco de dados.

  3. Codifique uma instrução semelhante a esse exemplo para criar um procedimento qualificado em um pacote Oracle:
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME
    "mySchema.myPackage.myProc";
  4. Codifique uma instrução semelhante a esse exemplo para criar um procedimento qualificado para o qual o nome do esquema é determinado no tempo de execução:
    CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL
    NAME "%.myProc";

    Se você criar um procedimento com essa especificação e utilizar a instrução de chamada correspondente (mostrada abaixo) poderá decidir exatamente qual procedimento armazenado é chamado no ponto em que a chamada foi feita.

Para obter exemplos das definições do procedimento armazenado no banco de dados, consulte Instrução CREATE PROCEDURE.

Chamando um Procedimento Armazenado

  1. Codifique uma instrução semelhante a esse exemplo para chamar um procedimento não qualificado ou um procedimento qualificado fixo:
    CALL myProc('HelloWorld');
  2. Codifique uma instrução semelhante a esse exemplo para chamar um procedimento qualificado com um esquema dinâmico:
    CALL myProc('HelloWorld') EXTERNAL SCHEMA
    'Schema2';
  3. Codifique uma instrução semelhante a esse exemplo para chamar um procedimento qualificado com um esquema dinâmico que é derivado do conteúdo da mensagem de entrada:
    CALL myProc('HelloWorld') EXTERNAL SCHEMA
    InputRoot.XML.Test.SchemaName;
Se você não especificou o nome do esquema como um único caractere percentual na cláusula EXTERNAL NAME da instrução CREATE, a cláusula do nome EXTERNAL SCHEMA da instrução CALL será ignorada se especificada.

Conceitos relacionados
Fluxos de Mensagem
Procedimentos ESQL

Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Tratando Erros em Fluxos de Mensagens

Referências relacionadas
Nó Compute
Nó Database
Nó Filter
ESQL
Instrução CALL
Instrução CREATE PROCEDURE