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

问题描述 投票:0回答:1

我有一个 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 的链接服务器存储过程。

有什么建议吗?

sql-server stored-procedures openquery
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.