I am aware OPENJSON is a new feature in SQL Server 2016.
我目前具有下面显示的用于SQL Server 2017的存储过程,但是我无法找到使它在SQL Server 2014上运行或找到兼容的等效存储的方法。
我得到的当前错误如下:
关键字“ WITH”附近的语法不正确。
关键字“ 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