FWTemporaryTable com Campo CLOB x BLOB - ORACLE

Existe uma configuração específica no ambiente local aqui do Protheus com ORACLE em que uma tabela padrão está configurada com a propriedade X2_CLOB = '1' e existe um campo Memo Real personalizado que está como CLOB na Tabela Física.

Ao ser criado uma tabela temporária pela rotina padrão FINA110 - Baixa Automática de Títulos a Receber - a rotina faz um DbStruct() e retorna todos os campos da tabela SE1 incluindo o campo personalizado e está criando o campo como BLOB.

Ao realizar a query de insert into na tabela temporária criada, gera o erro fatal: tipos de dados inconsistentes: BLOB esperado obteve CLOB

Alguém conhece alguma forma dessa componente FWTemporaryTable criar o campo memo como CLOB ao invés de BLOB no oracle, visto que o DBSTRUCT() retorna apenas "M" (de campo MEMO) e não está respeitando o tipo da tabela de origem e nem o X2_CLOB ?

compartilhar
  • Carlos, você levantou um ponto muito interessante, vou fazer alguns testes e em breve dou um retorno pra você.

    Daniel Mendes   14 de Apr de 2022
  • Problema passou a ocorrer na Release 33 - Na Release 25 não ocorria - Estranhamente.

    Carlos Eduardo Niemeyer Rodrigues   14 de Apr de 2022
  • Sabe me dizer então se teve alguma alteração da tabela que você cita quanto ao usa do X2_CLOB? Pois NADA disso foi alterado na FWTemporaryTable.

    Daniel Mendes   14 de Apr de 2022
  • Sim. Em nosso ambiente, os campos Memos em várias tabelas ORACLE são do tipo CLOB na tabela física e no X2_CLOB está igual a "1" (Ou seja ligado).

    Entretanto, o componente FWTemporaryTable não está respeitando essa configuração. E assim cria uma tabela temporária contendo um campo MEMO do Tipo BLOB (Padrão Protheus) e daí gera erro fatal ao executar um insert into na tabela temporária devido a conversão de tipo no ORACLE não ser automática.

    Estamos abrindo um ticket na TOTVS para verificar essa questão que está afetando em particular a rotina FINA110 mas pode afetar outros processos.

    Carlos Eduardo Niemeyer Rodrigues   14 de Apr de 2022
  • A solução dada até o momento foi de recriar a tabela com o campo do Tipo BLOB ou excluir o campo. Mas ambas as soluções não são adequadas para o processo de migração para a release 33, tendo em vista que a tabela SE1 é bem grande (Vários Grupos de Empresas envolvidos) e é importante manter o padrão CLOB.

    Creio que seja algo relacionado a libLabel TOTVS e não ao componente FwTemporaryTable em si, mas é onde está ocorrendo o problema.

    Carlos Eduardo Niemeyer Rodrigues   14 de Apr de 2022
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags fwtemporarytable ou faça a sua própria pergunta.