When I execute the following user stored procedure the message output (for the print) gives me the entire text of the email message body but the grid into which I select @msgtot is truncated (I assume at 255 chars). What am I doing wrong?
CREATE PROCEDURE usp_ProcessMail AS
DECLARE @status int, @message_id varchar(255)
DECLARE @originator varchar(255), @query varchar(255)
DECLARE @msgsubject varchar(255), @skip_bytes int, @msg_length int
DECLARE @msgtot varchar(8000)
SET @msgtot=' '
EXEC @status = master.dbo.xp_findnextmsg @msg_id = @message_id OUTPUT
SELECT @message_id
WHILE (1 = 1)
BEGIN
EXEC @status = master.dbo.xp_readmail @msg_id = @message_id,
@originator = @originator OUTPUT,
@subject = @msgsubject OUTPUT,
@message = @query OUTPUT,
@skip_bytes = @skip_bytes OUTPUT,
@msg_length = @msg_length OUTPUT
IF @status <> 0 BREAK
SELECT 'msg_id' = @message_id, 'msg_part' = @query
SELECT @msgtot = @msgtot + @query
IF @skip_bytes = @msg_length BREAK
END
PRINT @msgtot
SELECT @originator, @msgsubject,@msgtot
GO
CREATE PROCEDURE usp_ProcessMail AS
DECLARE @status int, @message_id varchar(255)
DECLARE @originator varchar(255), @query varchar(255)
DECLARE @msgsubject varchar(255), @skip_bytes int, @msg_length int
DECLARE @msgtot varchar(8000)
SET @msgtot=' '
EXEC @status = master.dbo.xp_findnextmsg @msg_id = @message_id OUTPUT
SELECT @message_id
WHILE (1 = 1)
BEGIN
EXEC @status = master.dbo.xp_readmail @msg_id = @message_id,
@originator = @originator OUTPUT,
@subject = @msgsubject OUTPUT,
@message = @query OUTPUT,
@skip_bytes = @skip_bytes OUTPUT,
@msg_length = @msg_length OUTPUT
IF @status <> 0 BREAK
SELECT 'msg_id' = @message_id, 'msg_part' = @query
SELECT @msgtot = @msgtot + @query
IF @skip_bytes = @msg_length BREAK
END
PRINT @msgtot
SELECT @originator, @msgsubject,@msgtot
GO