Insert de um campo LONG para outro campo LONG

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Renato Freitas
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Sáb, 23 Ago 2008 5:53 pm
Localização: são Paulo - SP

Pessoal,

estou tendo um problema com o datatype LONG, é o seguinte, eu estou lendo uma tabela do SQL que contém um campo do tipo TEXT e carregando em uma tabela no Oracle num campo do tipo LONG, até ai beleza, só que depois eu preciso inserir os dados carregados no Oracle em outra tabela do Oracle com um campo do tipo LONG, más da um erro:

Selecionar tudo

ORA-00997 uso ilegal do datatype LONG.

Se alguém poder me ajudar.

Obrigado,
Renato Freitas :-o
schnu
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 110
Registrado em: Ter, 24 Mai 2005 9:16 pm
Localização: Dongguan - Guangdong - China

Se eu tiver errado alguém me corrige por favor

Mas que eu saiba você não consegue manipular campo LONG e por isso foi craiado os tipos BLOB se você puder alterar a coluna para BLOB será bem mais facil manipular.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

já tentou fazer um INSERT ou UPDATE normal ?
http://glufke.net/oracle/viewtopic.php?t=154

Para tipo LOB funciona. Com LONG não sei. Testa ai pra gente :-D

Veja se não tem algo na DBMS_LOB que possa converter isso.
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Bom, Tive uma necessidade hoje de manipular dados em uma tabela que tem um LONG.

Fiz a seguinte rotina para jogar valores de um lado para o outro (entre tabelas)

Selecionar tudo

DECLARE
  TEXTO   VARCHAR2(2000);
  TEXTO_LENGTH NUMBER(9) := 0;
  CURSOR C1 IS
    SELECT CODIGO, --NUMBER
           TEXTO -- LONG
      FROM OWNER.TABELA ;
BEGIN
  FOR REC IN C1 LOOP
    TEXTO := LENGTH(REC.TEXT);
    TEXTO := SUBSTR(REC.TEXT, 1, 4000);
  END LOOP;
END;
Nesse caso, so manipulo os primeiros 4000 digitos... porém, é só fazer um loop dentro do for rec in c1 loop para exibir de 4000 em 4000 digitos... assim, consegui fazer um update em uma tabela com Long.

Espero que ajude em futuras consultas. :)
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes