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

      Senhores usuários de banco Oracle,

      Estou com o seguinte problema:

      Preciso fazer um select em uma tabela remota ao Schema que estou, e esse select eu faço através de um Database Link. Segue abaixo o comando SQL.

      SELECT * FROM NOME_DA_TABELA@DL_SCHEMA

      O Oracle retorna o seguinte erro para mim:

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

      Esse erro ocorre porquê ele não consegue acessar tabelas remotas que contém campos tipo LOB, e nessa tabela que estou tentando fazer uma pesquisa existe um campo do tipo CLOB.

      Andei pesquisando algumas documentações e nelas é citada uma package DBMS_LOB, mas não sei trabalhar com essa package, gostaria de saber se alguém já se deparou com esse problea e se existe alguma solução.

      Meus e-mails para contatos são:

      walter_vieira81@yahoo.com.br
      walter.vieira81@gmail.com

      Obrigado.

      #75316
      Avatar de Marcio68AlmeidaMarcio68Almeida
      Participante

        Dentro do SQL Plus você não vai conseguir retornar os valores da coluna do tipo LOB, CLOB ou BLOB.
        Ou você seleciona as demais colunas que são “visíveis” ao SQL Plus, ou você tera que usar um programa para recuperar essa informação.
        Mesmo que o seu conteúdo seja apenas texto, não será possível ver no SQL Plus. Nem em banco local, nem remoto.

        #75365
        Avatar de ebertfmebertfm
        Participante

          Pessoal, os campos CLOB e BLOB podem sim ser visualizados no SQL*Plus, Ao contrário do afirmado pelo Márcio na resposta acima. Desde que ele seja local.

          O Problema é com o acesso REMOTO a uma tabela q tenha o campo LOB-Large Object) (seja ele um BLOB-Binário ou CLOB- Caracter).

          Existem restrições com os campos do tipo LOB para acessos remotos. Veja um pedaço do manual do Oracle:


          LOB columns are subject to the following restrictions:

          Distributed LOBs are not supported. Therefore, you cannot use a remote locator in SELECT or WHERE clauses of queries or in functions of the DBMS_LOB package.

          The following syntax is not supported for LOBs:

          SELECT lobcol FROM table1@remote_site;
          INSERT INTO lobtable SELECT type1.lobattr FROM
          table1@remote_site;
          SELECT DBMS_LOB.getlength(lobcol) FROM table1@remote_site;

          (This statement produces error: ORA-22992 cannot use LOB locators selected from remote tables.)

          However, you can use a remote locator in others parts of queries that reference LOBs. The following syntax is supported on remote LOB columns:

          CREATE TABLE t AS SELECT * FROM table1@remote_site;
          INSERT INTO t SELECT * FROM table1@remote_site;
          UPDATE t SET lobcol = (SELECT lobcol FROM table1@remote_site);
          INSERT INTO table1@remote_site …
          UPDATE table1@remote_site …
          DELETE FROM table1@remote_site …


          Quando for local o funcionamento é normal. Veja os exemplos:

          SQL> create table teste_lob (chave number primary key, camplo_lob clob);

          Tabela criada.

          SQL> insert into teste_lob values (1,’valor dentro do campo’);

          1 linha criada.

          SQL> select * from teste_lob;

          CHAVE

          CAMPLO_LOB

               1
          

          valor dentro do campo

          SQL> select * from teste_lob;

          CHAVE

          CAMPLO_LOB

               1
          

          valor dentro do campo

          SQL>

          Vc vai ter que ler o manual na parte que fala da utilização do DBMS_LOB.

          Aí vai um link para um manual que tm algumas dicas:

          http://www.lc.leidenuniv.nl/awcourse/or … l04mng.htm

          Espero ter ajudado.

          Abraços.

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