如何将EXEC语句的输出转换成变量(mysql链接服务器上的调用过程)?

如何将EXEC语句的输出转换成变量(mysql链接服务器上的调用过程)?,mysql,tsql,linked-server,Mysql,Tsql,Linked Server,我能够从Sql2k5调用链接服务器(MySQL)上的过程。该过程返回一行、一列: declare @Statement nvarchar(200) set @Statement = 'call database.procedure(''some string'');' exec (@Statement) at [linkedserver] 。。。结果: some string 我现在需要的是将一个变量设置为从过程返回的值 我找到了一个有点相关的帖子 但当我尝试插入执行的结果时: inser

我能够从Sql2k5调用链接服务器(MySQL)上的过程。该过程返回一行、一列:

declare @Statement nvarchar(200)
set @Statement = 'call database.procedure(''some string'');'
exec (@Statement) at [linkedserver] 
。。。结果:

some string
我现在需要的是将一个变量设置为从过程返回的值

我找到了一个有点相关的帖子

但当我尝试插入执行的结果时:

insert into sometable exec (@Statement) at [linkedserver] 
我得到这个错误:

OLE DB provider "MSDASQL" for linked server "linkedserver" returned message "[MySQL][ODBC 5.1 Driver]Optional feature not supported".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "MSDASQL" for linked server "linkedserver" was unable to begin a distributed transaction.
有没有办法绕过这一点,或者有更好的办法获得这些结果


谢谢,

链接服务器是一个真正的难题,尤其是当元数据出错时。“插入”是一个分布式事务,不管您是否使用BEGIN/COMMIT TRAN(插入导致日志使用)。你试过OPENQUERY了吗?或者试试这些想法:

请注意以下链接中的提供程序和链接服务器选项:

链接服务器是一个真正的难题,尤其是当元数据出错时。“插入”是一个分布式事务,不管您是否使用BEGIN/COMMIT TRAN(插入导致日志使用)。你试过OPENQUERY了吗?或者试试这些想法:

请注意以下链接中的提供程序和链接服务器选项:

未测试,但如果尝试将
插入@sometablevariable
,会发生什么?插入意味着一个表。你是说set(我已经试过了)不确定那个评论是什么意思?我建议使用一个表变量,因为它们不以与常规表相同的方式参与事务。未经测试,但如果您尝试将
插入@sometablevariable
?插入意味着一个表。你是说set(我已经试过了)不确定那个评论是什么意思?我建议使用一个表变量,因为它们不像常规表那样参与事务。