2016-11-24 4 views
0

У меня есть база данных в SQL Server 2014, и у меня есть связанный сервер. Я хочу запустить sp, который запускает внутри нее хранимую процедуру , которая принадлежит связанному серверу.Выполнение хранимой процедуры в openquery с параметрами

К примеру у меня есть хранимая proedure:

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) 

Когда я бег хранимой proedure 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 из моей сохраненной процедуры в хранимую программу linkedserver, которая нуждается в этом 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