2017-02-20 51 views
1

我想创建一个函数,该函数仅在json-array不存在的情况下才为json-array添加值。我写一个函数作为OPENJSON中的变量的路径

CREATE FUNCTION dbo.JSON_ARRAY_APPEND (@json nvarchar(max), @arr nvarchar(max), @value nvarchar(max)) 
RETURNS nvarchar(max) 
AS 
BEGIN 
    IF NOT EXISTS (SELECT * FROM OPENJSON(@json,@arr) WHERE [value] = @value) 
    SET @json=JSON_MODIFY(@json,'append '[email protected],@value) 
    RETURN @json 
END 

但我得到错误

消息102,级别15,状态1,过程JSON_ARRAY_APPEND,5号线[批量 起始行6]附近有语法错误@arr“。

我看到那是因为我传递路径进入OPENJSON可变@arr

如何在正确的方式做到这一点?由于

回答

1

我做了这样

CREATE FUNCTION dbo.JSON_ARRAY_APPEND (@json nvarchar(max), @arr nvarchar(max), @value nvarchar(max)) 
RETURNS nvarchar(max) 
AS 
BEGIN 
    IF NOT EXISTS (SELECT * FROM OPENJSON(@json) WHERE [value] = @value AND [key] = RIGHT(@arr,LEN(@arr)-2)) 
     SET @json = JSON_MODIFY(@json,'append '[email protected],@value) 
    RETURN @json 
END 
GO