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

SQL Server

22/11/2011

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

Alex Lekao

Curtidas 0

Respostas

Marco Pinheiro

Marco Pinheiro

22/11/2011

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.,
GOSTEI 0
Marco Pinheiro

Marco Pinheiro

22/11/2011

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
GOSTEI 0
Alex Lekao

Alex Lekao

22/11/2011

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
GOSTEI 0
Marco Pinheiro

Marco Pinheiro

22/11/2011

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.
GOSTEI 0
Bruno Manguinho

Bruno Manguinho

22/11/2011

Utiliza a conversão:

set obs = CAST(TESTE ALEX - ESTAVA PENDENTE AS TEXT) + t.obs
GOSTEI 0
Bruno Manguinho

Bruno Manguinho

22/11/2011

Na verdade é o contrario:

set obs = TESTE ALEX - ESTAVA PENDENTE AS TEXT + cast(t.obs as varchar(8000))
GOSTEI 0
Alex Lekao

Alex Lekao

22/11/2011

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
GOSTEI 0
POSTAR