У меня вопрос по поводу моей конструкции SQL CTE. Я работаю с Azure фабрикой данных и хранимой процедурой в моей базе данных. Я хочу сделать следующее:
- Вернуть мои данные из моего представления в Azure Фабрику данных в формате JSON.
- Возвращает данные, отфильтрованные динамически в предложении WHERE на основе моего ObjectCode в моем представлении в формате JSON. -> Чтобы протестировать шаг 2, я попытался использовать статический объявленный ObjectCode
Но одинарная кавычка не работает прямо в предложении WHERE. Я попробовал кое-что с REPLACE, CHAR (39) и удвоил кавычки. Как они сказали здесь , здесь и здесь
Шаг 1 Я успешно завершил этот код:
BEGIN
DECLARE @TABLE TABLE(RESULT NVARCHAR(MAX))
DECLARE @QUERY NVARCHAR(MAX) = '
;WITH x(Params) as
(
SELECT * FROM [Schema].[View] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
)
Select * from x
'
Insert @TABLE
EXEC (@QUERY)
Select ',"pipelineParameters": ' + LEFT(RESULT,LEN(RESULT)-1) + '}' as Params from @TABLE;
END
Этот запрос выше дал мне правильный результат. Но теперь мне нужно внести изменения для Шаг 2 . Мне нужно отфильтровать с помощью предложения WHERE в запросе.
Итак, я попытался:
DECLARE @TABLE TABLE(RESULT NVARCHAR(MAX))
DECLARE @ObjectCode NVARCHAR(MAX) = 'Objectname'
DECLARE @QUERY NVARCHAR(MAX) = '
;WITH x(Params) as
(
SELECT * FROM [Schema].[View]
WHERE Objectcode = REPLACE(@ObjectCode, '''', '')
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
)
Select * from x
'
Insert @TABLE
EXEC (@QUERY)
Select ',"pipelineParameters": ' + LEFT(RESULT,LEN(RESULT)-1) + '}' as Params from @TABLE;
Но когда я запускаю эти запросы, я получаю эту ошибку:
Кто-нибудь знает, что я могу улучшить здесь, чтобы я мог заставить его работать?