Pessoal, tenho uma dúvida com campo CLOB, eu tenho um campo desse tipo na minha aplicação e eu gostaria de transformá-lo para outro tipo, eu posso transformá-lo para String direto ou tem algum problema?
Não entendi direito, você quer trasnformar um CLOB para VARCHAR? Ou pegar um campo CLOB em java para String, se for a primeira, dá para fazer mas tem que fazer umas “ginásticas” e não é muito bom não, o segundo dá para fazer sem problema, se for outra coisa posta ai.
[]s
[quote=Naruffy]Não entendi direito, você quer trasnformar um CLOB para VARCHAR? Ou pegar um campo CLOB em java para String, se for a primeira, dá para fazer mas tem que fazer umas “ginásticas” e não é muito bom não, o segundo dá para fazer sem problema, se for outra coisa posta ai.
[]s[/quote]
Diz como transforma pro menino! Tu só falou que dava mas não disse como!
Quero Transformar de CLOB para String. Value a atenção.
A solução para clob virar varchar :),
Ela consiste em criar um campo novo jogar os valores nesse campo, apagar o campo clob, criar ele de novo como varchar e colocar os valores de volta nele.
-- Adiciona o campo auxiliar
ALTER TABLE teste ADD campoauxiliar VARCHAR2(5)
/
-- Coloca os valores do nosso campo no auxliar
BEGIN
FOR Rec IN (SELECT campoclob
FROM teste)
lOOP
UPDATE teste SET campoauxiliar = dbms_lob.substr( rec.campoclob, 5, 1 );
END LOOP;
END;
/
-- Dropa o campo para ele ser criado com o novo tipo desejado
ALTER TABLE teste DROP COLUMN campoclob
/
-- Cria o campo com o novo tipo desejado
ALTER TABLE teste ADD campoclob VARCHAR2(5)
/
-- Coloca os valores de volta no novo campo
BEGIN
FOR Rec IN (SELECT campoauxiliar
FROM teste) lOOP
UPDATE teste SET campoclob = rec.campoauxiliar;
END LOOP;
END;
/
-- Apaga o campo auxiliar
ALTER TABLE teste DROP COLUMN campoauxiliar
/
[]s
Desculpa amigo, mas acho que não fui muito específico, eu pego o campo CLOB do banco e na minha aplicação eu dou dou um toString() nele, a minha dúvida era com relação a essa ação, se pode dar algum erro??
Hum, imagino que você esteja pegando com o ResultSet.getString certo?, caso sim não haverá problema algum, pois CLOB é o tipo de dados para armazenar um texto muito grande, então na hora de conerter para String é a mesma coisa que se fosse um campo varchar
[]s
Só mais uma dúvida String do Java tem um tamanho limite??
Só vai dar erro se você chamar o toString em uma referência nula. Você pode não receber a String desejada, caso o método to String não esteja implementado neste Objeto, mas se você está preocupado com erros não vai ter.
Já achei a resposta, 2 bilhões de caracteres
2 bilhões só? 0o
não seria 2^32, igual a qq outro array em Java?
pra mim tanto faz…