Clipper On Line • Ver Tópico - Concatenação Strings - Firebird

Concatenação Strings - Firebird

Discussão sobre SQL

Moderador: Moderadores

 

Concatenação Strings - Firebird

Mensagempor raquelreis » 16 Abr 2012 10:15

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.)
/*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*/
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar de usuário

raquelreis
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 18 Jul 2011 15:29
Cidade/Estado: à procura
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Concatenação Strings - Firebird

Mensagempor raquelreis » 16 Abr 2012 11:23

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):

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


Espero que ajude.
Keel
[]'s

_____________________________________________________________________________________
PROGRAMADOR é aquele que te resolve um problema que você não sabia que tinha, de uma maneira que você não compreende.
Avatar de usuário

raquelreis
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 18 Jul 2011 15:29
Cidade/Estado: à procura
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Concatenação Strings - Firebird

Mensagempor Maligno » 23 Abr 2012 01:44

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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro