相关疑难解决方法(0)

多个发起者将使用的服务代理程序开始对话对话..如何将参数传递给它

开始对话的标准格式是这样的:

Declare @dialog_handle UNIQUEIDENTIFIER
BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE initiator_1
   TO SERVICE 'target_1'
   ON CONTRACT MyContract ;
Run Code Online (Sandbox Code Playgroud)

但是我想创建一个灵活的通用过程,它可以从多个启动器服务中的任何一个发送特定对话(假设我有 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 ;
Run Code Online (Sandbox Code Playgroud)

我想这行不通,因为服务的标识符在

FROM SERVICE @initiatorServiceName 
Run Code Online (Sandbox Code Playgroud)

实际上不能是字符串,而必须是服务的实际名称...是否有一种简单的方法可以将其作为参数传递?或者我是否必须将所有这些嵌套在一个令人讨厌的串联字符串执行中?

@String = blahblah + blah blah + escapecharacters + blah
execute(@String)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

sql-server-2008 sql-server service-broker

3
推荐指数
1
解决办法
1499
查看次数