Определение переменной nvarchar(max)
(которая является действительным JSON объектом) всегда является опцией, но вы можете попытаться отформатировать результаты запроса из оператора SELECT
как JSON, используя FOR JSON AUTO
. В этом случае структура вывода JSON зависит от структуры оператора SELECT.
Оператор:
DECLARE @ScriptData nvarchar(max)
SET @ScriptData =
(
SELECT
Model.ModelName, Model.Version,
Student.StudentID, Student.StudentName,
Work.WorkID, Work.WorkNameName,
Note.NoteID, Note.Comments,
Visible.IsVisible
FROM (VALUES ('Registration', 1)) Model (ModelName, Version)
CROSS APPLY (VALUES (NULL, NULL)) Student (StudentID, StudentName)
CROSS APPLY (VALUES (NULL, NULL)) Work (WorkID, WorkNameName)
CROSS APPLY (VALUES (NULL, NULL)) Note (NoteID, Comments)
CROSS APPLY (VALUES (NULL)) Visible (IsVisible)
FOR JSON AUTO, ROOT('Model'), INCLUDE_NULL_VALUES
)
Результат:
{
"Model":[
{
"ModelName":"Registration",
"Version":1,
"Student":[
{
"StudentID":null,
"StudentName":null,
"Work":[
{
"WorkID":null,
"WorkNameName":null,
"Note":[
{
"NoteID":null,
"Comments":null,
"Visible":[
{
"IsVisible":null
}
]
}
]
}
]
}
]
}
]
}