654
Part V: Enterprise Data Management
BREAK ;
END ;-- Process all messages in the conversation group. Notice
-- that all processing occurs in the same transaction.WHILE 1 = 1
BEGIN-- Receive the next message for the conversation group.
-- Notice that the receive statement includes a WHERE
-- clause to ensure that the messages received belong to
-- the same conversation group.RECEIVE
TOP(1)
@conversation_handle = conversation_handle,
@message_type_name = message_type_name,
@message_body =
CASE
WHEN validation = 'X' THEN CAST(message_body AS XML)
ELSE CAST(N'<none/>' AS XML)
END
FROM [dbo].[TargetQueue]
WHERE conversation_group_id = @conversation_group_id ;-- If there are no more messages, or an error occurred,
-- stop processing this conversation group.IF @@ROWCOUNT = 0 OR @@ERROR <> 0 BREAK;-- Show the information received.SELECT 'Conversation Group Id' = @conversation_group_id,
'Conversation Handle' = @conversation_handle,
'Message Type Name' = @message_type_name,
'Message Body' = @message_body ;-- If the message_type_name indicates that the message is
an error or an end dialog message, end the conversation.IF @message_type_name =
'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog'
OR @message_type_name =
'http://schemas.microsoft.com/SQL/ServiceBroker/Error'
BEGIN
END CONVERSATION @conversation_handle ;c25.indd 654c25.indd 654 7/31/2012 9:21:38 AM7/31/2012 9:21:38 AM
http://www.it-ebooks.info