带参数在openquery中执行存储过程

Execute stored proedure in openquery with parameters

我在 SQL Server 2014 中有一个数据库,并且有一个链接服务器。 我想 运行 一个 sp,其中 运行 在她的存储过程中 属于链接服务器。

例如我有存储过程:

PROCEDURE test (@myint  int) 
AS 
      DECLARE @Query VARCHAR(2000)
      SET @Query = 'INSERT INTO mytable SELECT * FROM OPENQUERY([mylinkedserver], ''EXEC  [linkedserverdb].[dbo].[linkedserversp]  
    '+ @myint + '  '')'

       EXEC(@Query)

当我 运行 存储过程 test 42 时出现错误:

Conversion failed when converting the varchar value 'INSERT INTO mytable SELECT * FROM OPENQUERY([mylinkedserver], 'EXEC [linkedserverdb].[dbo].[linkedserversp] ' to data type int.

请注意,我正在尝试将变量 myint 从我的存储过程传递到需要该 int 的 linkedserver 存储过程。

有什么建议吗?

PROCEDURE test (@myint  int) AS 
DECLARE @Query VARCHAR(2000)
SET @Query = 'INSERT INTO mytable SELECT * FROM OPENQUERY([mylinkedserver], ''EXEC  [linkedserverdb].[dbo].[linkedserversp]  
'+ CAST(@myint AS VARCHAR(10)) + ''')'

EXEC(@Query)

您正在尝试将 INT @myint 与字符串 'exec...' 连接起来,您必须将 @myint 转换为兼容的字符类型,例如VARCHAR.