Мне известно, что OPENJSON - это новая функция в SQL Server 2016.
В настоящее время у меня есть хранимая процедура, показанная ниже, для SQL Server 2017, но я не могу найти способ заставить ее работать на SQL Server 2014 или найти совместимый эквивалент.
Текущая ошибка, которую я получаю, выглядит следующим образом:
Неверный синтаксис рядом с ключевым словом WITH.
Неверный синтаксис рядом с ключевым словом «с». Если этот оператор является общим табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой.
Мой код:
CREATE PROCEDURE ProcedureName
@submissionID INT
AS
DECLARE @submission_FormDefn AS INT
DECLARE @Defn_json AS NVARCHAR(MAX)
DECLARE @Subm_json AS NVARCHAR(MAX)
SELECT
@Subm_json = [jsonPost],
@submission_FormDefn = [FormDefn_Id]
FROM
form_submissions
WHERE
id = @submissionID
SET @Defn_json = (SELECT [data]
FROM form_defns
WHERE id = @submission_FormDefn)
SELECT
dd.name, dd.label, dd.type, V.VALUE
FROM
[dbo].[form_submissions_VALUES] V
INNER JOIN
OPENJSON(@Defn_json) WITH (name varchar(MAX) '$.name',
label varchar(MAX) '$.label',
type varchar(MAX) '$.type') dd ON V.field = dd.name
WHERE
type IN ('one', 'two', 'three')
AND v.FormSubmission_Id = @submissionID
GO