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).
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:
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.
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.
CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "mySchema.myPackage.myProc";
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.
CALL myProc('HelloWorld');
CALL myProc('HelloWorld') EXTERNAL SCHEMA 'Schema2';
CALL myProc('HelloWorld') EXTERNAL SCHEMA InputRoot.XML.Test.SchemaName;
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
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
ac17040_ |