Мне нужно было проанализировать строку JSON из столбца таблицы SQL Server 2008 R2, поэтому я использовал 2 представления, 3 таблицы и несколько пошаговых запросов. Все работало.
Теперь после заполнения нескольких баз данных мне нужно разрешить размещение триггеров на определенной таблице. Поскольку из триггера можно вызывать только хранимую процедуру, я конвертировал все в хранимую процедуру.
Все прошло хорошо, кроме CREATE VIEW
заявления. Я обернул это в EXEC, но я все еще получаю синтаксическую ошибку относительно незакрытой цитаты. Я пробовал несколько разных способов включения ключевых слов, но ничего не получалось.
Вот фрагмент кода:
EXEC ('If object_ID(''vw_BuildLookup01'',''V'') IS NOT NULL
DROP VIEW vw_BuildLookup01;')
EXEC ('If object_ID(''vw_BuildLookup02'',''V'') IS NOT NULL
DROP VIEW vw_BuildLookup02;')
EXEC ('CREATE VIEW [dbo].[vw_BuildLookup01]
AS
SELECT DISTINCT t.tblKey, t.Name AS MetricTypesName, m.tblKey AS MetricKey, m.Name AS MetricName,
m.MetricLimitedValues, f.Value
FROM OccurrenceMetricFacts f
INNER JOIN Metrics m ON f.MetricKey = m.tblKey
INNER JOIN MetricTypes t ON m.MetricTypeKey = t.tblKey
WHERE m.MetricLimitedValues IS NOT NULL AND t.DeletedDate IS NULL AND f.Value IS NOT NULL
')
EXEC ('CREATE VIEW [dbo].[vw_BuildLookup02]
AS
SELECT v.tblKey, v.MetricTypesName, v.MetricKey, v.MetricName,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(v.MetricLimitedValues, '"Name":"', ''),'","Value"', ''),'{', ''), '}',''),'[', ''), ']', '') AS MetricLimitedValues, v.Value
FROM vw_BuildLookup01 v
INNER JOIN MetricTypes t ON t.tblKey = v.tblKey
WHERE t.DeletedDate IS NULL
')
Синтаксическая ошибка в строке:
CREATE VIEW [dbo].[vw_BuildLookup02]
после вложенных REPLACE
команд «Имя»: «» имеет страшную красную волнистую линию внизу.