Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #90794
    airoosp
    Participante

      Boa tarde,

      Estou tendo problemas com a geração de um relatório que utiliza o retorno de uma query e um dos campos que retorna é do tipo long.
      O problema é com o espaço que há após a última informação gravada no campo long.
      Tentei utilizar o TRIM mas vi que não funciona com este tipo de campo, alguém tem alguma dica ou idéia para resolver?

      Banco 9i.

      Obrigado.

      #90798
      fsitja
      Participante

        Pelo que sei você vai ter que passar para um LOB e de lá selecionar os dados para seu relatório, usando uma outra tabela para isso. O motivo, até onde conheço, é que a função TO_LOB só pode ser usada através de comandos INSERT e uma tabela não consegue suportar duas colunas LONG para usar uma migração através de ALTER TABLE.

        De qualquer forma, seu select vai restringir a 4000 caracteres, que é o máximo que um varchar2 aceita (return type do TRIM).

        Tem outras formas de fazer usando temporary lobs, imagino, mas não creio que seja mais simples.


        Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
        Connected as SYS

        SQL>
        SQL> create table t1 (col_long long);

        Table created

        SQL> insert into t1 (col_long) values (rpad('A', 10000, 'A'));

        1 row inserted

        SQL> create table t2 (col_lob clob);

        Table created

        SQL> insert into t2 (col_lob) select to_lob(col_long) from t1;

        1 row inserted

        SQL> select substr(col_lob, 1, 4000) from t2;

        SUBSTR(COL_LOB,1,4000)

        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

        SQL>

        #90800
        airoosp
        Participante

          Entendi, mas o que preciso fazer é no retorno do select um dos campos é do tipo long e no momento que o registro foi gravado na tabela este campo ficou com espaços após a útima palavra, sendo assim preciso retirar estes espaços. Tentei utilizar as funções ltrim, trim, rtrim mas para campos do tipo long não funcionam.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.