Lixo em mensagem RAISERROR - help!

09/09/2004

0

Olá pessoal, o meu problema é o seguinte:

Em um determinado ponto de uma Stored Procedure, há uma condição, que caso seja verdadeira, lanço uma mensagem. O código segue abaixo:

IF (COALESCE(@Valor_Multa,0) <> COALESCE(@Multa_original, 0))
BEGIN
SELECT @Msg = ´Não é possível alterar a multa de um documento de baixa parcial (´ + @Old_Shopping + ´/´ + @Old_Codigo_do_Documento + ´).´ + char(13) + char(10) + ´ Ela deve ser incluida no momento da criacao da parcela.´
RAISERROR ( @Msg, 16, 1 )
RETURN 0
END

O problema é que quando eu rodo a aplicação no Delphi, no cadastro em questão ao qual se aplica essa stored procedure, o Delphi lança a excessão, com a mensagem que eu escrevi na stored procedure acima. Mas a mensagem não aparece inteira, aparece com lixo no final.
A mensagem aparece assim:

Não é possível alterar a multa de um documento de baixa parcial (RDB /BP20040303).
Ela deve ser incluida no momento
daÀ(quadradinho)

A mensagem aparece exatamente dessa forma.

Como posso fazer pra resolver esse problema?

Obrigado,

Tiago.


Tiagoharris

Tiagoharris

Responder

Posts

16/09/2004

Aroldo Zanela

Colega,

Como foi declarada @msg? Abaixo um teste que efetuei por aqui e não apresentou problemas. Usei Delphi 6, SQL 2000 e ADO:

CREATE PROCEDURE [USP_Teste] AS
declare @mensagem as VarChar(1000)
set @mensagem = ´Nao é possível alterar a multa de um documento de baixa parcial. (000/000000000)´+char(10)+char(13)+´Ela deve ser incluida no momento da criacao da parcela´
RAISERROR ( @mensagem, 16, 1 ) 
RETURN

GO



Responder

16/09/2004

Tiagoharris

está declarado assim:

...
Declare
@Msgvarchar(500),
(mais outras variáveis)


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar