2016-11-24 78 views
0

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

比如我有存储proedure:当我运行存储proedure test 42我得到一个错误

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) 

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

请注意,我想将我的存储过程中的变量myint传递给需要int的链接服务器存储过程。

有什么建议吗?

回答

2
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

+0

我认为我需要一些输入教程的教程...:P 谢谢马特,没关系 – Dimitris

+0

@Dimitris如果你全部设置好,请欢迎并接受答案,以便其他人知道你已经得到了你需要和声望点被授予。谢谢 – Matt