Update em campo CLOB no oracle

9 respostas
nbluis

Sim.
vc faz um select e obtem a instancia do CLOB que tu quer alterar.
Depois seta o novo valor dele atraves dos métodos da interface CLOB.
depois basta fazer um update com um prepared statement.

Valeu.

9 Respostas

nbluis

Mesmo direto no banco a lógica é a mesma.

Entenda que large objects, por mais que não seja o seu caso, suportam enormes massas de dados.
Não há uma maneira simples e trivial de se fazer isso apenas com SQL ANSI.

Qual o banco está usando ??

fabim

preparedStatement.setBytes( 1, arrayDeBytes ) ?

nbluis

Utiliza a package DBMS_LOB para isso.

Aqui tem exemplos disso.

http://www.psoug.org/reference/dbms_lob.html

Valeu.

nbluis

OBS: Essa concatenação tem limite de tamanho…

É de 4000 bytes que serão armazenados no mesmo bloco de dados do resto da tabela.

Porém o oracle pode armazenar muito mais que isso em LOB’s.

Até Oracle 9i = 4GB
Oracle 10G = (4GB - 1 byte) * Tamanho do Bloco de dados.
No caso se o Bloco for de 32K.
Cada arquivo pode ter só até (128 TB - 1 byte).

Até.
:smiley:

I

Boa tarde,

Andei pesquisando no google algumas maneiras de realizar um update em um campo CLOB  no oracle e até agora não localizei nada q me ajudou.. tentei fazer um update como um varchar normal mas o oracle acusou q a string literal too long. Alguem conhece alguma maneira de realizar um update em um campo CLOB?

Att,
José Carlos.

I

Obrigado pela resposta nbluis mas não posso fazer isso atraves do java, tenho que fazer direto no banco.

agradeço a atenção e vou procurar uma maneira aqui.

Abraços.

I

Oracle.

I

Obrigado esse site ajudou bastante, estou montando uma query pra verificar se funciona.

Abraços.

I

Achei a solução e vou postar aqui pra quem um dia precisar!!!

Como a string q eu estava tentando adicionar era grande e toda hora o oracle acusava o erro String Literal too long eu tive a ideia de quebrar a string e ir concatenando aos poucos assim:

Declare x clob; begin x := 'teste'; x := x || 'teste'; --e assim sucessivamente até concatenar toda minha string depois update tabela set campoCLOB = x where condicao; commit; end;

E funcionou perfeitamente :)…

Agradeço a atenção de todos.
Abraços
José Carlos.

Criado 19 de outubro de 2007
Ultima resposta 19 de out. de 2007
Respostas 9
Participantes 3