Página 1 de 1

Concatenação Strings - Firebird

Enviado: 16 Abr 2012 10:15
por raquelreis
Bom dia,

Desculpe se postei a dúvida na seção errada.

Estou com problemas com firebird. Não conheço o banco muito bem, mas conheço alguma coisa de SQL.
Estou tentando realizar um simples Update na minha tabela de produto e encontro vários erros.
1) erro valores nulos, coloque uma cláusula where e resolvi.
Mas agora está com erro de overflow (Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.-Estouro aritmético ou divisão por zero ocorreu.
arithmetic exception, numeric overflow, ou truncamento string.)

Código: Selecionar todos

/*Erro*/
update produto p
set p.ds_produto = p.ds_produto||' - '||p.ds_complemento_produto
where p.ds_produto is not null  and p.ds_complemento_produto is not null

/*Funciona*/
select p.ds_produto||' - '||p.ds_complemento_produto as Descricao
from produto p
where p.ds_produto is not null  and p.ds_complemento_produto is not null

/*Funciona*/
update produto p
set p.ds_produto = p.ds_produto||' - '||p.ds_complemento_produto
where p.ds_produto is not null  and p.ds_complemento_produto is not null
and p.cd_produto = 22 /*produto aleatório*/

Concatenação Strings - Firebird

Enviado: 16 Abr 2012 11:23
por raquelreis
Dúvida sanada
Bom dia

Acredito que este erro pode estar ocorrendo porque o resultado da concatenação possui uma quantidade de caracteres maior que a quantidade de caracteres aceita pelo campo ds_produto.
Se o objetivo for truncar o restante, acho que você pode utilizar a função Substring mais ou menos como segue (supondo tamanho de 40 caracteres):

Código: Selecionar todos

SET p.ds_produto = SUBSTRING(p.ds_produto || ' - ' || p.ds_complemento_produto FROM 1 FOR 40)


Espero que ajude.

Concatenação Strings - Firebird

Enviado: 23 Abr 2012 01:44
por Maligno
Posso estar fazendo chover no molhado, mas tenho uma dica, que se for redundante pra você, certamente poderá ajudar outros colegas que fazem ou farão uso do Firebird. O programa IBExport (grátis na versão personal) ajuda bastante a fazer testes com SQLs. Melhor e mais rápido que compilar e testar no programa alvo. Além do que, dá pra fazer um "roll back" para não alterar nada no banco de dados.