我在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
时,我收到了错误消息:
转换varchar值' INSERT INTO mytable SELECT * FROM OPENQUERY([mylinkedserver],' EXEC [linkedserverdb]。[dbo]。[linkedserversp]'到数据类型int时转换失败
请注意,我尝试将myint从存储的proedure传递给需要该int的linkedserver存储过程。
有什么建议吗?
答案 0 :(得分: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
。