开始对话的标准格式如下:
Declare @dialog_handle UNIQUEIDENTIFIER
BEGIN DIALOG CONVERSATION @dialog_handle
FROM SERVICE initiator_1
TO SERVICE 'target_1'
ON CONTRACT MyContract ;
但是我想创建一个灵活的通用过程,可以从许多发起者服务中的任何一个发送特定的对话(比如我有 10 个潜在的发起者服务将使用相同的存储过程)。
Create Procedure SendJoinRequest (@initiatorServiceName varchar)
AS
Declare @dialog_handle UNIQUEIDENTIFIER
BEGIN DIALOG CONVERSATION @dialog_handle
FROM SERVICE @initiatorServiceName
TO SERVICE 'target_1'
ON CONTRACT MyContract ;
我想这行不通,因为服务的标识符在
FROM SERVICE @initiatorServiceName
实际上不能是字符串,而必须是服务的实际名称......有没有一种简单的方法可以将其作为参数传递?还是我必须将所有这些嵌套在一个连接字符串的讨厌执行中?
@String = blahblah + blah blah + escapecharacters + blah
execute(@String)
谢谢你的帮助
实际上它会起作用。大多数 SSB 动词都接受参数作为参数(当然,RECEIVE 的队列名除外)。参数类型为
sysname
: