Как использовать OPENJSON или совместимый эквивалент в SQL Server 2014? - PullRequest
0 голосов
/ 07 ноября 2018

Мне известно, что 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
...