2017-02-20 9 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, 5 호선 [일괄 시작 6 호선] 근처의 구문이 잘못되었습니다 '@arr'을 얻었다.

나는 내가 올바른 방법으로이 작업을 수행하는 방법에

@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