SEND (Transact-SQL)
使用现有会话发送消息。
语法
SEND
ON CONVERSATION conversation_handle
[ MESSAGE TYPE message_type_name ]
[ ( message_body_expression ) ]
[ ; ]
参数
- ON CONVERSATION conversation_handle
指定消息所属的会话。 conversation_handle 必须包含一个有效的会话标识符。
- MESSAGE TYPE message_type_name
指定已发送的消息的消息类型。 必须将此消息类型包含在此会话使用的服务约定中。 约定必须允许从此会话方发送此消息类型。 例如,会话目标只能发送在约定中指定为 SENT BY TARGET 或 SENT BY ANY 的消息。 如果省略此子句,则消息类型为 DEFAULT。
- message_body_expression
提供一个表示消息主体的表达式。 message_body_expression 是可选的。 但如果存在 message_body_expression,则表达式必须是一个可以转换为 varbinary(max) 的类型。 该表达式不能为 NULL。 如果省略该子句,则消息主体为空。
备注
重要提示: |
---|
如果 SEND 语句不是批处理或存储过程中的第一条语句,则必须用 Transact-SQL 语句终止符分号 (;) 终止前面的语句。 |
SEND 语句锁定指定的会话句柄所属的会话组。
SEND 在用户定义函数中无效。
权限
要发送消息,当前用户必须对该对话源自的服务拥有 SEND 权限。 如果该服务存在远程服务绑定,则在该远程服务绑定中指定的用户必须对此对话源自的服务队列拥有 RECEIVE 权限。
示例
A. 发送消息
此示例启动一个对话并发送一条有关此对话的 XML 消息。 要发送此消息,该示例将 xml 对象转换为 varbinary(MAX)。
DECLARE @dialog_handle UNIQUEIDENTIFIER,
@ExpenseReport XML ;
SET @ExpenseReport = < construct message as appropriate for the application > ;
BEGIN DIALOG @dialog_handle
FROM SERVICE [//Adventure-Works.com/Expenses/ExpenseClient]
TO SERVICE '//Adventure-Works.com/Expenses'
ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseProcessing] ;
SEND ON CONVERSATION @dialog_handle
MESSAGE TYPE [//Adventure-Works.com/Expenses/SubmitExpense]
(@ExpenseReport) ;
请参阅
参考
BEGIN DIALOG CONVERSATION (Transact-SQL)
BEGIN CONVERSATION TIMER (Transact-SQL)
END CONVERSATION (Transact-SQL)