Sumário

Search

  1. Prefácio
  2. Trabalhando com Transformações
  3. Transformação Agregador
  4. Transformação Personalizada
  5. Funções de Transformação Personalizada
  6. Transformação Mascaramento de Dados
  7. Exemplos de Mascaramento de Dados
  8. Transformação Expressão
  9. Transformação Procedimento Externo
  10. Transformação Filtros
  11. Transformação HTTP
  12. Transformação de Resolução de Identidade
  13. Transformação Java
  14. Referência da API da transformação Java
  15. Expressões Java
  16. Exemplo de Transformação Java
  17. Transformação Joiner
  18. Transformação Pesquisa
  19. Caches de Pesquisa
  20. Cache de Pesquisa Dinâmica
  21. Transformação Normalizador
  22. Transformação Classificação
  23. Transformação Roteador
  24. Transformação de Gerador de Sequência
  25. Transformação Classificador
  26. Transformação de Qualificador de Origem
  27. Transformação SQL
  28. Usando a Transformação SQL em um Mapeamento
  29. Transformação Procedimento Armazenado
  30. Transformação Controle de Transações
  31. Transformação União
  32. Transformação Dados Não Estruturados
  33. Transformação Estratégia de Atualização
  34. Transformações XML

Guia de Transformações

Guia de Transformações

Chamando um Procedimento Armazenado de Uma Expressão

Chamando um Procedimento Armazenado de Uma Expressão

Em um mapeamento não conectado, a transformação do Procedimento Armazenado não se conecta ao pipeline.
A figura a seguir mostra um mapeamento com uma Transformação Expressão que faz referência à Transformação Procedimento Armazenado:
O mapeamento contém uma origem, Qualificador de origem, transformação de Expressão, destino e uma transformação Procedimento armazenado desconectada.
Entretanto, como ocorre com um mapeamento conectado, é possível aplicar o procedimento armazenado ao fluxo de dados por meio do mapeamento. Na verdade, há maior flexibilidade, uma vez que se usa uma expressão para chamar o procedimento armazenado, que significa que é possível selecionar os dados que você transfere ao procedimento armazenado na qualidade de parâmetro de entrada.
Ao utilizar uma Transformação Procedimento Armazenado não conectada em uma expressão, é necessário um método de retornar o valor de parâmetros de saída a uma porta. Use um dos métodos a seguir para capturar os valores de saída:
  • Atribua o valor de saída a uma variável local.
  • Atribua o valor de saída à variável de sistema PROC_RESULT.
Usando a PROC_RESULT, você atribui o valor do parâmetro de retorno diretamente a uma porta de saída, que pode ser aplicada diretamente a um destino. Também é possível combinar as duas opções atribuindo um parâmetro de saída como PROC_RESULT, e o outro parâmetro como uma variável.
Use PROC_RESULT somente dentro de uma expressão. Caso não utilize o PROC_RESULT ou uma variável, a porta que contiver a expressão obtém um NULL. Não é possível utilizar PROC_RESULT em uma Transformação Pesquisa conectada ou dentro da Chamada de texto de uma Transformação Procedimento Armazenado.
Se forem necessários procedimentos armazenados aninhados, onde os parâmetros de saída de um procedimento armazenado são transferidos para outro procedimento armazenado, use PROC_RESULT para transferir o valor.
O Serviço de Integração chama a transformação não conectada do Procedimento Armazenado a partir da Transformação Expressão. Observe que a transformação do Procedimento Armazenado tem duas portas de entrada e uma porta de saída. As três portas são tipos de dados de string.
Para chamar um procedimento armazenado de dentro de uma expressão:
  1. Crie a Transformação Procedimento Armazenado no mapeamento.
  2. Em qualquer transformação que ofereça suporte a portas de saída e variáveis, crie uma nova porta de saída na transformação que chame o procedimento armazenado. Atribua um nome para a porta de saída.
    A porta de saída que chama o procedimento armazenado deve oferecer suporte a expressões. Dependendo de como a expressão é configurada, a porta de saída contém o valor do parâmetro de saída ou o valor de retorno.
  3. Abra o Editor de Expressão da porta.
    O valor da nova porta é definido no Editor de Expressão como uma chamada ao procedimento armazenado usando a palavra-chave :SP na Linguagem de Transformação. A maneira mais fácil de efetuar essa configuração adequadamente é selecionar o nó dos Procedimentos Armazenados no Editor de Expressão e clicar no nome da transformação do Procedimento Armazenado listada. Para que um Procedimento Armazenado normal conectado apareça na lista de funções, é necessário pelo menos uma porta de entrada e uma de saída.
    O procedimento armazenado aparece no Editor de Expressão com dos parênteses vazios. Os parâmetros de entrada e/ou saída necessários são exibidos no canto inferior esquerdo do Editor de Expressão.
  4. Configure a expressão para enviar parâmetros de entrada e obter parâmetros de saída ou valor de retorno.
    É necessário saber se os parâmetros mostrados no Editor de Expressão são de entrada ou de saída. Insira variáveis ou nomes de porta entre os parênteses na ordem em que aparecem no procedimento armazenado. Os tipos de dados das portas e variáveis devem combinar com os dos parâmetros transferidos ao procedimento armazenado.
    Por exemplo, ao clicar no procedimento armazenado, aparecerá algo semelhante ao que segue:
    :SP.GET_NAME_FROM_ID()
    Esse procedimento armazenado, em especial, exige um valor inteiro na qualidade de parâmetro de entrada e retorna um valor de string na qualidade de parâmetro de saída. A maneira com que o parâmetro de saída ou valor de retorno é obtido depende do número de parâmetros de entrada e do fato de o valor de retorno precisar ser obtido.
    Se o procedimento armazenado retornar um único parâmetro de saída ou um valor de retorno (mas não os dois), a variável reservada PROC_RESULT deverá ser usada como variável de saída. No exemplo anterior, a expressão apareceria como:
    :SP.GET_NAME_FROM_ID(inID, PROC_RESULT)
    inID pode ser ou uma porta de entrada para a transformação ou uma variável na transformação. O valor de PROC_RESULT é aplicado à porta de saída para a expressão.
    Se o procedimento armazenado retornar diversos parâmetros de saída, será necessário criar variáveis para cada parâmetro de saída. Por exemplo, se você criar uma porta chamada varOUTPUT2 para a expressão do procedimento armazenado e uma variável chamada varOUTPUT1, a expressão aparecerá como:
    :SP.GET_NAME_FROM_ID(inID, varOUTPUT1, PROC_RESULT)
    O valor da segunda porta de saída é aplicado à porta de saída para a expressão, e o valor da primeira porta de saída é aplicado a varOUTPUT1. Os parâmetros de saída são retornados na ordem em que são declarados no procedimento armazenado.
    Com todas essas expressões, os tipos de dados das portas e variáveis devem combinar com os tipos de dados das variáveis de entrada/saída e valores de retorno.
  5. Clique em Validar para verificar a expressão, depois clique em OK para fechar o Editor de Expressão.
    A validação da expressão garante que os tipos de dados para os parâmetros do procedimento armazenado combinem com os que são inseridos na expressão.
  6. Clique em OK.
    Ao salvar o mapeamento, o Designer não valida a expressão do procedimento validado. Se a expressão do procedimento armazenado não estiver adequadamente configurada, haverá falha na sessão. Ao testar um mapeamento com um procedimento armazenado, defina a opção da sessão Substituir Rastreamento para um modo detalhado e configure a opção da sessão No Procedimento Armazenado para que pare de executar em caso de falha do procedimento armazenado. Configure essas opções de sessão nas configurações de Tratamento de Erros da guia Objeto de Configuração nas propriedades da sessão.
O procedimento armazenado na expressão inserida em uma porta não tem que afetar todos os valores que passam pela porta. Com a instrução IIF, por exemplo, é possível transferir apenas determinados valores, como números de ID que comecem com 5, ao procedimento armazenado e ignorar todos os outros valores. Também é possível configurar procedimentos armazenados aninhados para que o valor de retorno de um procedimento armazenado se torne um parâmetro de entrada de um segundo procedimento armazenado.