Хитрость к динамическому SQL заключается в том, чтобы убедиться, что SQL работает, прежде чем пытаться сделать его динамичным.
Ваш запрос требует нескольких настроек, прежде чем он будет работать как базовый запрос SQL:
set nocount on;
select coalesce(replace(replace(A.[type], char(10), ''''), char(13), ''''),'''') as Type
, try_convert(xml, col).value('(/collection/object/fields/field/value)[1]', 'varchar(3)')
from (
select col = coalesce(replace(replace([business_line], char(10), ''''), char(13), ''''),''''), Type
FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS]
) A;
Тогда и только тогда преобразуйте в динамический SQL, удвоив все одинарные кавычки:
declare @Query as nvarchar(1000) = 'set nocount on;
select coalesce(replace(replace(A.[type], char(10), ''''), char(13), ''''),'''') as Type
, try_convert(xml, col).value(''(/collection/object/fields/field/value)[1]'', ''varchar(3)'')
from (
select col = coalesce(replace(replace([business_line], char(10), ''''), char(13), ''''),''''), Type
FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS]
) A;'
exec(@Query);