2017-02-20 5 views
1

json-arrayに値を追加する関数を作成したいのですが、そこに存在しない場合のみです。私はOPENJSONの変数としてのPATH

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、 '@arr' ニアライン5 [バッチ スタートライン6]不正な構文を得ました。

私は、変数@arrとしてOPENJSONにパスを渡すので、それが正しい方法でこれを行うために

方法で参照してください?おかげ

答えて

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 
関連する問題