22/11/2011

Erro: Os tipos de dados varchar e text são incompatíveis no operador add.

Ola Estou rodando o seguinte script e esta retornando erro.

SCRIPT:
update TITULOS set obs=(TESTE ALEX - ESTAVA PENDENTE)+t.obs
from TITULOS t,REQVDA r
where (t.sid=r.sid)
and LEN(r.numfat)=7 and r.tiporeq=vd
and t.stafin<>F
and r.numfat in(select fv.numfat from REQVDA fv where LEN(fv.numfat)=7 and fv.tiporeq=fv)

ERRO:
Mensagem 402, Nível 16, Estado 1, Linha 12
Os tipos de dados varchar e text são incompatíveis no operador add.

Alguem poderia me dar uma forca?

Abraco.

Alex - Lekao

Alex Lekao

Respostas

22/11/2011

Marco Pinheiro

Pelo que está na consulta talvez um dos campos que estão sendo relacionados são de tipos diferentes.

O campo OBS da tabela TITULOS é do tipo TEXT?
Outra dúvida: O comando (TESTE ALEX - ESTAVA PENDENTE), não deveria estar em aspas?

Att.,
Responder Citar

22/11/2011

Marco Pinheiro

Provavelmente seu campo é TEXT. Neste caso tem que usar outro comando. Segue exemplo:

ALTER DATABASE pubs
SET RECOVERY SIMPLE;
GO


DECLARE @ptrval binary(16)


SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id AND p.pub_name = New Moon BooksUPDATETEXT pub_info.pr_info @ptrval 88 1 b;
GO

ALTER DATABASE pubs SET RECOVERY FULL;
GO
Responder Citar

23/11/2011

Alex Lekao

Ola Marco, bom dia!!

Obrigado pela ajuda.

Sim de fato o campo obs eh text.

As aspas acabei esquecendo de colocar qdo estava transcrevendo o script.

Desculpe, mas sou meio que iniciante no sql e nao entendi muito bem o seu exemplo.

Mesmo assim, muito obrigado.

Abraco.

Alex - Lekao
Responder Citar

23/11/2011

Marco Pinheiro

Alex,

Postei apenas um exemplo, mas procure por UPDATETEXT na net que terão vários exemplos a respeito.

Se ainda não conseguir resolver sua dúvida informe-nos.

Att.,

Marco.
Responder Citar

15/12/2011

Bruno Manguinho

Utiliza a conversão:

set obs = CAST(TESTE ALEX - ESTAVA PENDENTE AS TEXT) + t.obs
Responder Citar

15/12/2011

Bruno Manguinho

Na verdade é o contrario:

set obs = TESTE ALEX - ESTAVA PENDENTE AS TEXT + cast(t.obs as varchar(8000))
Responder Citar

15/12/2011

Alex Lekao

Ola Bruno.

Muito obrigado!!!

Acabei utilizando outro campo para gravar essas informacoes.

Mas utilizarei essa sua dica para outros momentos, mantenho uma especie de base de dados com scripts e dicas para usar no sql.

Mais uma vez obrigado!!!

Alex - Lekao
Responder Citar