2015-05-27 2 views
1

Я создаю хранимую процедуру, в которой я звоню чужую хранимой процедуры (Эту процедуру возвращает много столбцов, и я хочу только одно значение столбца Поэтому я не могу создать темп таблица для хранения значений) с использованием OPENROWSET.Использование параметров В OPENROWSET Sql Server

Когда я использовать ниже, то это хорошо

declare @AgencyID int=15,@PatientID int=3701 
SELECT a.PrimaryInsuredName 
    FROM OPENROWSET('SQLNCLI', 
    'Server=ServerName;Database=DbName;Trusted_Connection=yes', 
    'exec USP_Billing_GetPatientWithInsurence 3701,15') AS a; 

Это работает отлично. Но я хочу передать параметры для вызова USP_Billing_GetPatientWithInsurence, потому что значения будут динамическими. Поэтому я использую следующий код

declare @AgencyID int=15,@PatientID int=3701 
    SELECT a.PrimaryInsuredName 
     FROM OPENROWSET('SQLNCLI', 
     'Server=ServerName;Database=DbName;Trusted_Connection=yes', 
     'exec USP_Billing_GetPatientWithInsurence '+ @PatientID +','+ @AgencyID+'') AS a; 

Но это не работает Когда я запускаю этот запрос, то произошла ошибка Incorrect syntax near '+'. я не знаю, почему это приходит. Пожалуйста, обеспечить решение этого. Я googled также для этого, но не могу найти надлежащее решение.

Благодаря

ответ

4

Вы должны сделать все ваши выберитеСтроковым динамическим:

declare @AgencyID int=15,@PatientID int=3701 
DECLARE @SQLStr varchar(max)=' 
    SELECT a.PrimaryInsuredName 
     FROM OPENROWSET(''SQLNCLI'', 
     ''Server=ServerName;Database=DbName;Trusted_Connection=yes'', 
     ''exec USP_Billing_GetPatientWithInsurence '+ CAST(@PatientID AS varchar(15)) +','+ CAST(@AgencyID AS varchar(15)) +''') AS a'; 
EXECUTE(@SQLStr); 
Смежные вопросы