我有一个 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 从我的存储过程传递到需要该 int 的链接服务器存储过程。
有什么建议吗?
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
。