У меня есть связанный сервер, который содержит данные.Вызов каждой таблицы по отдельности занимает слишком много времени, поэтому единственный вариант - использовать OpenQuery.Проблема заключается в том, что мне нужно передать параметр в запрос.
OpenQuery не поддерживает параметры, означающие, что это должно быть сделано через Exec и строку, созданную с полной командой в нем.Мне также нужно клиентское приложение, написанное на C #.
Я мог бы построить строку в C # и передать ее, но я пытаюсь сделать приложение независимым, когда дело доходит до источника данных, поэтому хочу избежать внедрения SQL в приложение.
Кодк хранимой процедуре
ALTER PROCEDURE [dbo].[Get_Patient_By_MRN] ( @MRN VarChar(10) )
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @Patient_Sql VarChar(768) =
'
SELECT * FROM OPENQUERY([CERNER_APP_DB_PROD],''
Select P.PERSON_ID
, PA1.ALIAS AS MRN
, PA2.ALIAS AS NHS_Number
, P.NAME_LAST_KEY
, P.NAME_FIRST_KEY
, P.NAME_FULL_FORMATTED
, P.BIRTH_DT_TM
From V500.PERSON P LEFT JOIN V500.PERSON_ALIAS PA1
ON PA1.PERSON_ID = P.PERSON_ID AND
PA1.PERSON_ALIAS_TYPE_CD = 10
LEFT JOIN V500.PERSON_ALIAS PA2
ON PA2.PERSON_ID = P.PERSON_ID AND
PA2.PERSON_ALIAS_TYPE_CD = 18
Where PA1.ALIAS = ''''' + @MRN + '''''
'')
'
Return Exec @Patient_Sql
END