Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marco Pinheiro

Campos CLOB

Recommended Posts

Pessoal,

 

Estou tentando fazer um INSERT em uma coluna do tipo CLOB. Porém o texto é maior que os 4000 caracteres que ela permite, com isso gera o seguinte erro: ORA-01704: string literal too long.

 

Diante disso não consigo fazer a inserção. Tentei criar uma outra coluna com o tipo LONG mas nesta minha tabela já existe um outro campo do tipo LONG RAW e o Oracle não permite duas colunas deste tipo na mesma tabela. Ou seja, não consigo sair do lugar!!!!

 

Alguém poderia interceder nisso??????

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vou aproveitar o barco... tenho um problema com uma trigger em uma tabela com esse tipo de campo.

Estou montando um esquema de replicação de dados entre duas instâncias, onde na instância que provém os dados criei uma trigger que alimenta a mesma tabela na outra instância via DBLink.

 

Segue a trigger:

 

Create Or Replace Trigger tr_aiud_produtos
After Insert Or Update Or Delete
On produtos
For Each Row

Begin
 If inserting Then
   Insert Into produtos@dblink(
               produto_id,
               categoria_id,
               produto_nome,
               marca_id,
               cod_fabricante,
               produto_componente,
               produto_html,
               img_grd,
               isbn13
               )
        Values(
               :new.produto_id,
               :new.categoria_id,
               :new.produto_nome,
               :new.marca_id,
               :new.cod_fabricante,
               :new.produto_componente,
               :New.produto_html,
               :new.img_grd,
               :new.isbn13
               );

 End If;

 If updating Then
   Begin
     Update produtos@dblink
        Set produto_id         = :new.produto_id,
            categoria_id       = :new.categoria_id,
            produto_nome       = :new.produto_nome,
            marca_id           = :new.marca_id,
            cod_fabricante     = :new.cod_fabricante,
            produto_componente = :new.produto_componente,
            produto_html       = :New.produto_html,
            img_grd            = :new.img_grd,
            isbn13             = :new.isbn13
      Where produto_id = :Old.produto_id;

   Exception
     When Others Then 
          Raise_application_error(-20000, Sqlerrm);
   End;
 End If;

 If deleting Then
   Delete
     From produtos@dblink
    Where produto_id = :Old.produto_id;
 End If;

End tr_aiud_produtos;

 

Só que ao compilar dá o erro:

ORA-22992: cannot use LOB locators selected from remote tables

 

O campo CLOB é o produto_html.

Existe alguma forma de contornar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo manual não .....

 

ORA-22992: cannot use LOB locators selected from remote tables

Cause: A remote LOB column cannot be referenced.

Action: Remove references to LOBs in remote tables.

 

Mas no asktom há duas referencias

 

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:5322964030684

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:950029833940

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.